<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">
	<title>安全设置 | ElasticSearch 7.7 权威指南中文版</title>
	<meta name="keywords" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <meta name="description" content="ElasticSearch 权威指南中文版, elasticsearch 7, es7, 实时数据分析，实时数据检索" />
    <!-- Give IE8 a fighting chance -->
    <!--[if lt IE 9]>
    <script src="https://oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
    <script src="https://oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
    <![endif]-->
	<link rel="stylesheet" type="text/css" href="../static/styles.css" />
	<script>
	var _link = 'security-settings.html';
    </script>
</head>
<body>
<div class="main-container">
    <section id="content">
        <div class="content-wrapper">
            <section id="guide" lang="zh_cn">
                <div class="container">
                    <div class="row">
                        <div class="col-xs-12 col-sm-8 col-md-8 guide-section">
                            <div style="color:gray; word-break: break-all; font-size:12px;">原英文版地址: <a href="https://www.elastic.co/guide/en/elasticsearch/reference/7.7/security-settings.html" rel="nofollow" target="_blank">https://www.elastic.co/guide/en/elasticsearch/reference/7.7/security-settings.html</a>, 原文档版权归 www.elastic.co 所有<br/>本地英文版地址: <a href="../en/security-settings.html" rel="nofollow" target="_blank">../en/security-settings.html</a></div>
                        <!-- start body -->
                  <div class="page_header">
<strong>重要</strong>: 此版本不会发布额外的bug修复或文档更新。最新信息请参考 <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html" rel="nofollow">当前版本文档</a>。
</div>
<div id="content">
<div class="breadcrumbs">
<span class="breadcrumb-link"><a href="index.html">Elasticsearch 权威指南 [7.7]</a></span>
»
<span class="breadcrumb-link"><a href="setup.html">安装和设置</a></span>
»
<span class="breadcrumb-link"><a href="settings.html">配置 Elasticsearch</a></span>
»
<span class="breadcrumb-node">安全设置</span>
</div>
<div class="navheader">
<span class="prev">
<a href="search-settings.html">« 搜索设置</a>
</span>
<span class="next">
<a href="shard-request-cache.html">分片的请求缓存设置 »</a>
</span>
</div>
<div class="section xpack">
<div class="titlepage"><div><div>
<h2 class="title">
<a id="security-settings"></a>安全设置
</h2>
</div></div></div>

<p>
默认情况下，当你使用 basic<code class="remark">(基本)</code> 或 trail<code class="remark">(试用)</code> 许可时，Elasticsearch 安全功能是禁用的。
要启用安全功能，请使用 <code class="literal">xpack.security.enabled</code> 设置。
</p>
<p>
配置 <code class="literal">xpack.security</code> 设置以 <a class="xref" href="security-settings.html#anonymous-access-settings" title="Anonymous access settings">启用匿名访问</a> 并执行消息身份验证，
<a class="xref" href="security-settings.html#field-document-security-settings" title="Document and field level security settings">设置文档和字段级别的安全</a>，
<a class="xref" href="security-settings.html#realm-settings" title="Realm settings">配置<em>领域(realm)</em></a>，
<a class="xref" href="security-settings.html#ssl-tls-settings" title="General TLS settings">用 SSL 加密通信</a>，
以及 <a class="xref" href="auditing-settings.html" title="Auditing security settings">审计安全事件</a>。
</p>
<p>
有这些设置都可以添加到<code class="literal">elasticsearch.yml</code>配置文件中，只有安全设置除外，它是添加到 Elasticsearch 密钥库中的。
有关创建和更新 Elasticsearch 密钥库的更多信息，请参考 <a class="xref" href="secure-settings.html" title="Secure settings">安全设置</a>。
</p>
<h4>
<a id="general-security-settings"></a>常规安全设置
</h4>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.enabled</code>
</span>
</dt>
<dd>
<p>
设置为 <code class="literal">true</code> 以在节点上启用 Elasticsearch 安全功能。
</p>
<p>
如果设置为 <code class="literal">false</code>（basic 许可证和 trail 许可证的默认值），则安全功能将被禁用。
它还影响连接到这个 Elasticsearch 实例的所有 Kibana 实例，不需要在那些 Kibana 实例的 <code class="literal">kibana.yml</code> 文件中禁用安全特性。
有关在特定 Kibana 实例中禁用安全功能的更多信息，请参考 <a href="https://www.elastic.co/guide/en/kibana/7.7/security-settings-kb.html" class="ulink" target="_top">Kibana安全设置</a>。
</p>
<div class="tip admon">
<div class="icon"></div>
<div class="admon_content">
<p>
如果你使用 gold 或更高版本的许可证，默认就是 <code class="literal">true</code>；但是仍建议你显式地添加此设置，以免混淆。
</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.hide_settings</code>
</span>
</dt>
<dd>
集群节点信息API结果中忽略的设置的逗号分隔列表。
一个用逗号分隔的设置列表，这些设置在 <a class="xref" href="cluster-nodes-info.html" title="Nodes info API">集群节点信息API</a> 的结果中被省略了。
可以使用通配符在列表中包含多个设置。
例如，<code class="literal">xpack.security.authc.realms.active_directory.ad1.*</code> 这个值会隐藏 ad1 活动目录领域(active_directory realm)的所有设置。
出于信息的敏感性，API 已经忽略了所有<code class="literal">ssl</code>设置、<code class="literal">bind_dn</code>和 <code class="literal">bind_password</code>。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.fips_mode.enabled</code>
</span>
</dt>
<dd>
启用 <code class="literal">fips</code> 操作模式。
如果你在启用 FIPS 140-2 的 JVM 中运行这个 Elasticsearch 实例，请设置为 <code class="literal">true</code>。
更多信息参考 <a class="xref" href="fips-140-compliance.html" title="FIPS 140-2">FIPS 140-2</a>。
默认为 <code class="literal">false</code>。
</dd>
</dl>
</div>
<h4>
<a id="password-hashing-settings"></a>密码哈希设置
</h4>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.authc.password_hashing.algorithm</code>
</span>
</dt>
<dd>
指定用于安全用户凭据存储的哈希算法。  
参考 <a class="xref" href="security-settings.html#password-hashing-algorithms" title="Password hashing algorithms">表 2，“密码哈希算法”</a>。默认为<code class="literal">bcrypt</code>。
</dd>
</dl>
</div>
<h4>
<a id="anonymous-access-settings"></a>匿名访问设置
</h4>
<p>
你可以在 <code class="literal">elasticsearch.yml</code> 中配置下面几个匿名访问设置。
更多信息参考 <a class="xref" href="anonymous-access.html" title="Enabling anonymous access">启用匿名访问</a>。
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.authc.anonymous.username</code>
</span>
</dt>
<dd>
匿名用户的用户名(最重要的)。默认为 <code class="literal">_es_anonymous_user</code> 。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.authc.anonymous.roles</code>
</span>
</dt>
<dd>
与匿名用户关联的角色。必需的。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.authc.anonymous.authz_exception</code>
</span>
</dt>
<dd>
为<code class="literal">true</code>时，如果匿名用户没有请求操作的适当权限，则返回 HTTP 403 响应。
也不会提示用户提供凭据来访问所请求的资源。
当设置为 <code class="literal">false</code> 时, 会返回一个 HTTP 401 响应，用户可以提供具有适当权限的凭据来获得访问权限。
默认为 <code class="literal">true</code>。
</dd>
</dl>
</div>
<h4>
<a id="security-automata-settings"></a>自动机(Automata) 设置
</h4>
<p>
在安全特征接受通配符模式的地方(例如，角色中的索引模式、角色映射API中的组匹配)，每个模式都被编译成自动机。
以下设置可用于控制这种行为。
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.automata.max_determinized_states</code>
</span>
</dt>
<dd>
单个模式可以创建的自动机状态的上限。
这防止了过于困难(例如指数级困难)的模式。
默认为 <code class="literal">100,000</code> 。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.automata.cache.enabled</code>
</span>
</dt>
<dd>
是否缓存编译后的自动机。
编译自动机会占用大量 CPU 资源，可能会降低某些操作的速度。
缓存降低了自动机需要编译的频率。
默认为 <code class="literal">true</code> 。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.automata.cache.size</code>
</span>
</dt>
<dd>
自动机缓存中要保留的最大项目数。默认为 <code class="literal">10,000</code> 。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.automata.cache.ttl</code>
</span>
</dt>
<dd>
项目在自动机缓存中保留的时间(基于最近的使用)。
默认为 <code class="literal">48h</code> (48 小时)。
</dd>
</dl>
</div>
<h4>
<a id="field-document-security-settings"></a>文档和字段级别的安全设置
</h4>
<p>
可以在 <code class="literal">elasticsearch.yml</code> 中配置下面几个文档和字段级别的安全设置。
更多信息参考 <a class="xref" href="field-and-document-access-control.html" title="Setting up field and document level security">设置字段和文档级别的安全</a>。
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.dls_fls.enabled</code>
</span>
</dt>
<dd>
设置为<code class="literal">false</code> 可防止配置文档和字段级别的安全性。
默认为 <code class="literal">true</code> 。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.dls.bitset.cache.ttl</code>
</span>
</dt>
<dd>
用于文档级安全的 <code class="literal">位组 (BitSet)</code> 的缓存的生存时间(ttl, time-to-live)。
文档级安全查询可能依赖于 Lucene BitSet 对象，这些对象会被自动缓存以提高性能。
默认会将 <code class="literal">168h</code> (7天)未使用的记录过期。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.dls.bitset.cache.size</code>
</span>
</dt>
<dd>
用于文档级安全的 <code class="literal">位组 (BitSet)</code> 的缓存可使用的最大内存。
文档级安全查询可能依赖于 Lucene BitSet 对象，这些对象会被自动缓存以提高性能。
默认为 <code class="literal">50mb</code>，超过此内存，最近最少使用的记录将被清除。
</dd>
</dl>
</div>
<h4>
<a id="token-service-settings"></a>令牌(token)服务设置
</h4>
<p>可以在 <code class="literal">elasticsearch.yml</code> 中设置以下令牌服务设置。</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.authc.token.enabled</code>
</span>
</dt>
<dd>
设置为 <code class="literal">false</code> 以禁用内置的令牌服务。
默认值是 <code class="literal">true</code>，除非 <code class="literal">xpack.security.http.ssl.enabled</code>设置为 <code class="literal">false</code>。
这可以防止通过普通 http 从连接中嗅探令牌。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.authc.token.timeout</code>
</span>
</dt>
<dd>
令牌的有效时间。
默认情况下，这个值是 <code class="literal">20m</code>，就是 20分钟。
最大值是 1 小时。
</dd>
</dl>
</div>
<h4>
<a id="api-key-service-settings"></a>API 密钥服务管理
</h4>
<p>可以在 <code class="literal">elasticsearch.yml</code> 中设置以下 API 密钥服务设置。</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.authc.api_key.enabled</code>
</span>
</dt>
<dd>
设置为 <code class="literal">false</code> 以禁用内置的 API 密钥服务。
默认值是 <code class="literal">true</code>，除非 <code class="literal">xpack.security.http.ssl.enabled</code>设置为 <code class="literal">false</code>。
这可以防止通过普通 http 从连接中嗅探API 密钥。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.authc.api_key.hashing.algorithm</code>
</span>
</dt>
<dd>
指定用于保护 API 密钥凭据的哈希算法。
参考 <a class="xref" href="security-settings.html#password-hashing-algorithms" title="Password hashing algorithms">表 2, “密码哈希算法”</a>。
默认值为 <code class="literal">pbkdf2</code>。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.authc.api_key.cache.ttl</code>
</span>
</dt>
<dd>
缓存的 API 密钥的生存时间。
在这段时间内，API 密钥的 id 及密钥的哈希值被缓存。
用 Elasticsearch 标准的<a class="xref" href="common-options.html#time-units" title="Time units">time units (时间单位)</a>指定时间段。
默认为 <code class="literal">1d</code> 即 1 天。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.authc.api_key.cache.max_keys</code>
</span>
</dt>
<dd>
在任何给定时间内，可以存在于缓存中的 API 密钥的最大数量。默认为 10,000。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.authc.api_key.cache.hash_algo</code>
</span>
</dt>
<dd>
(专家级设置) 用于缓存在内存中的 API 密钥凭据的哈希算法。
有关可能的值，参考 <a class="xref" href="security-settings.html#cache-hash-algo" title="Cache hash algorithms">表 1, “缓存哈希算法”</a>.
默认值为 <code class="literal">ssha256</code>。
</dd>
</dl>
</div>
<h4>
<a id="realm-settings"></a>领域(realm) 设置
</h4>
<p>
可以在 <code class="literal">elasticsearch.yml</code> 的 <code class="literal">xpack.security.authc.realms</code> 命名空间下配置领域设置。
比如：
</p>
<div class="pre_wrapper lang-yaml">
<pre class="programlisting prettyprint lang-yaml">xpack.security.authc.realms:

    native.realm1: <a id="CO24-1"></a><i class="conum" data-value="1"></i>
        order: 0
        ...

    ldap.realm2:
        order: 1
        ...

    active_directory.realm3:
        order: 2
        ...
    ...</pre>
</div>
<div class="calloutlist">
<table border="0" summary="Callout list">
<tr>
<td align="left" valign="top" width="5%">
<p><a href="#CO24-1"><i class="conum" data-value="1"></i></a></p>
</td>
<td align="left" valign="top">
<p>
指定领域的类型（比如，<code class="literal">native</code>, <code class="literal">ldap</code>, <code class="literal">active_directory</code>, <code class="literal">pki</code>, <code class="literal">file</code>, <code class="literal">kerberos</code>, <code class="literal">saml</code>）及领域的名称。
此设置是必须的。
</p>
</td>
</tr>
</table>
</div>
<p>
有效设置因领域类型而异。
更多信息请参考 <a class="xref" href="setting-up-authentication.html" title="User authentication"><em>用户身份验证</em></a>。
</p>
<h5>
<a id="ref-realm-settings"></a>对所有领域有效的设置
</h5>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">order</code>
</span>
</dt>
<dd>
领域链中领域的优先级。值越小，越先被咨询。
虽然不是必需的，但强烈建议在配置多个领域时使用此设置。
默认值为 <code class="literal">Integer.MAX_VALUE</code>。
</dd>
<dt>
<span class="term">
<code class="literal">enabled</code>
</span>
</dt>
<dd>
是否启用领域。
可以使用此设置禁用领域，而无需删除其配置信息。默认为 <code class="literal">true</code>。
</dd>
</dl>
</div>
<h5>
<a id="ref-native-settings"></a>本地领域设置 (native realm settings)
</h5>
<p>
对于本地领域来说，<code class="literal">type</code> 必须设置为 <code class="literal">native</code>。
除了<a class="xref" href="security-settings.html#ref-realm-settings" title="Settings valid for all realms">对所有领域都有效的设置</a>之外，你还可以指定以下可选设置:
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">cache.ttl</code>
</span>
</dt>
<dd>
缓存的用户的生存时间。
在这段时间内，用户及其凭证的哈希值将被缓存。
用 Elasticsearch 标准的<a class="xref" href="common-options.html#time-units" title="Time units">time units (时间单位)</a>指定时间段。
默认为 <code class="literal">20m</code> 即 20 分钟。
</dd>
<dt>
<span class="term">
<code class="literal">cache.max_users</code>
</span>
</dt>
<dd>
在任何给定时间内，可以存在于缓存中的最大用户数量。默认为 <code class="literal">100000</code>
</dd>
<dt>
<span class="term">
<code class="literal">cache.hash_algo</code>
</span>
</dt>
<dd>
(专家级设置) 用于缓存在内存中的用户凭据的哈希算法。
有关可能的值，参考 <a class="xref" href="security-settings.html#cache-hash-algo" title="Cache hash algorithms">表 1, “缓存哈希算法”</a>.
默认值为 <code class="literal">ssha256</code>。
</dd>
<dt>
<span class="term">
<code class="literal">authentication.enabled</code>
</span>
</dt>
<dd>
如果设置为 <code class="literal">false</code>，则在该领域中禁用对身份验证的支持，这就仅支持用户查找了。
(参考 <a class="xref" href="run-as-privilege.html" title="Submitting requests on behalf of other users">运行方式 (run as)</a> 和 <a class="xref" href="realm-chains.html#authorization_realms" title="Delegating authorization to another realm">授权领域</a> 功能)。
默认为 <code class="literal">true</code>。
</dd>
</dl>
</div>
<h5>
<a id="ref-users-settings"></a>文件领域设置
</h5>
<p>
<code class="literal">type</code> 设置必须设置为 <code class="literal">file</code>。
除了<a class="xref" href="security-settings.html#ref-realm-settings" title="Settings valid for all realms">对所有领域都有效的设置</a>之外，你还可以指定以下可选设置:</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">cache.ttl</code>
</span>
</dt>
<dd>
缓存的用户的生存时间。
在这段时间内，用户及其凭证的哈希值将被缓存。
用 Elasticsearch 标准的<a class="xref" href="common-options.html#time-units" title="Time units">time units (时间单位)</a>指定时间段。
默认为 <code class="literal">20m</code> 即 20 分钟。
</dd>
<dt>
<span class="term">
<code class="literal">cache.max_users</code>
</span>
</dt>
<dd>
在任何给定时间内，可以存在于缓存中的最大用户数量。默认为 <code class="literal">100000</code>
</dd>
<dt>
<span class="term">
<code class="literal">cache.hash_algo</code>
</span>
</dt>
<dd>
(专家级设置) 用于缓存在内存中的用户凭据的哈希算法。
有关可能的值，参考 <a class="xref" href="security-settings.html#cache-hash-algo" title="Cache hash algorithms">表 1, “缓存哈希算法”</a>.
默认值为 <code class="literal">ssha256</code>。
</dd>
<dt>
<span class="term">
<code class="literal">authentication.enabled</code>
</span>
</dt>
<dd>
如果设置为 <code class="literal">false</code>，则在该领域中禁用对身份验证的支持，这就仅支持用户查找了。
(参考 <a class="xref" href="run-as-privilege.html" title="Submitting requests on behalf of other users">运行方式 (run as)</a> 和 <a class="xref" href="realm-chains.html#authorization_realms" title="Delegating authorization to another realm">授权领域</a> 功能)。
默认为 <code class="literal">true</code>。
</dd>
</dl>
</div>
<h5>
<a id="ref-ldap-settings"></a>LDAP 领域设置
</h5>
<p>
<code class="literal">type</code> 设置必须设置为 <code class="literal">ldap</code>。

除了<a class="xref" href="security-settings.html#ref-realm-settings" title="Settings valid for all realms">对所有领域都有效的设置</a>之外，你还可以指定以下可选设置:
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">url</code>
</span>
</dt>
<dd>
<p>
<code class="literal">ldap[s]://&lt;server&gt;:&lt;port&gt;</code> 格式的一个或多个 LDAP url地址。必需的。
</p>
<p>
如果要提供多个 url 地址，使用 YAML 数组 (<code class="literal">["ldap://server1:636", "ldap://server2:636"]</code>) 或者逗号分隔的字符串 (<code class="literal">"ldap://server1:636, ldap://server2:636"</code>)。
</p>
<p>
虽然两者都受支持，但是不能混合使用<code class="literal">ldap</code>和<code class="literal">ldaps</code>协议。
</p>
</dd>
<dt>
<span class="term">
<code class="literal">load_balance.type</code>
</span>
</dt>
<dd>
定义了多个 LDAP url地址时使用的行为。
关于支持的值，请参考 <a class="xref" href="security-settings.html#load-balancing" title="Load balancing and failover">负载均衡和故障转移类型</a>。
默认值为 <code class="literal">failover</code>。
</dd>
<dt>
<span class="term">
<code class="literal">load_balance.cache_ttl</code>
</span>
</dt>
<dd>
当负载均衡的类型为 <code class="literal">dns_failover</code> 或 <code class="literal">dns_round_robin</code> 时，这个设置用来控制 DNS 查找缓存的时间。
默认值为 <code class="literal">1h</code>。
</dd>
<dt>
<span class="term">
<code class="literal">bind_dn</code>
</span>
</dt>
<dd>
用于绑定到 LDAP 并执行搜索的用户的 DN。
仅适用于用户搜索模式。
如果未指定，则尝试匿名绑定。
默认值为空。
由于潜在的安全影响，<code class="literal">bind_dn</code> 没有通过 <a class="xref" href="cluster-nodes-info.html" title="Nodes info API">节点信息API</a>公开。
</dd>
<dt>
<span class="term">
<code class="literal">bind_password</code>
</span>
</dt>
<dd>
<span class="Admonishment Admonishment--change">
[<span class="Admonishment-version u-mono u-strikethrough">6.3</span>]
<span class="Admonishment-detail">
在 6.3 中废弃
</span>
</span> 使用 <code class="literal">secure_bind_password</code> 替代之。
用于绑定到 LDAP 目录的用户密码。
默认值为空。
由于潜在的安全影响，<code class="literal">bind_password</code> 没有通过 <a class="xref" href="cluster-nodes-info.html" title="Nodes info API">节点信息API</a>公开。
</dd>
<dt>
<span class="term">
<code class="literal">secure_bind_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
用于绑定到 LDAP 目录的用户密码。
默认值为空。
</dd>
<dt>
<span class="term">
<code class="literal">user_dn_templates</code>
</span>
</dt>
<dd>
用字符串<code class="literal">{0}</code>替换用户名的 DN 模板。
该设置是 多值的(multivalued)，你可以指定多个用户上下文。
需要在用户模板模式下操作。
如果指定了 <code class="literal">user_search.base_dn</code>，则此设置无效。
有关不同模式的更多信息，请参考<a class="xref" href="ldap-realm.html" title="LDAP user authentication">LDAP 用户身份验证</a>。
</dd>
<dt>
<span class="term">
<code class="literal">authorization_realms</code>
</span>
</dt>
<dd>
<p>
委托授权时应咨询的领域的名称。
如果使用此设置，则 LDAP 领域不执行角色映射，而是从列出的领域加载用户。
被引用的领域按照它们在列表中定义的顺序进行查询。
参考 <a class="xref" href="realm-chains.html#authorization_realms" title="Delegating authorization to another realm">将授权委托给另一个领域</a>。
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
如果指定的任何一个设置以 <code class="literal">user_search</code> 开头，则 <code class="literal">user_dn_templates</code> 设置将无效。
</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">user_group_attribute</code>
</span>
</dt>
<dd>
指定要检查用户组成员关系的属性。
如果指定了任何 <code class="literal">group_search</code> 设置，该设置将被忽略。
默认为 <code class="literal">memberOf</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.base_dn</code>
</span>
</dt>
<dd>
为用户搜索所指定的容器 DN。
需要在用户搜索模式下操作。
如果指定了 <code class="literal">user_dn_templates</code>，则此设置无效。
有关不同模式的更多信息，请参考<a class="xref" href="ldap-realm.html" title="LDAP user authentication">LDAP 用户身份验证</a>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.scope</code>
</span>
</dt>
<dd>
用户搜索的范围。
有效值包括<code class="literal">sub_tree</code>、<code class="literal">one_level</code>、<code class="literal">base</code>。
<code class="literal">one_level</code> 搜索直接包含在 <code class="literal">base_dn</code>中的对象。
<code class="literal">sub_tree</code> 搜索 <code class="literal">base_dn</code> 中的所有对象。
<code class="literal">base</code> 指定 <code class="literal">base_dn</code> 是用户对象，并且是唯一被考虑的用户。
默认值为 <code class="literal">sub_tree</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.filter</code>
</span>
</dt>
<dd>
指定用于搜索目录的过滤器，以尝试将记录与用户提供的用户名相匹配。
默认值为 <code class="literal">(uid={0})</code>。
<code class="literal">{0}</code> 会被替换为搜索时提供的用户名。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.attribute</code>
</span>
</dt>
<dd>
<span class="Admonishment Admonishment--change">
[<span class="Admonishment-version u-mono u-strikethrough">5.6</span>]
<span class="Admonishment-detail">
在 5.6 中废弃。
</span>
</span> 使用 <code class="literal">user_search.filter</code> 替代之。
与请求发送的用户名匹配的属性。默认为 <code class="literal">uid</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.enabled</code>
</span>
</dt>
<dd>
为用户搜索启用或禁用连接池。
如果设置为<code class="literal">false</code>，则每次搜索都会创建一个新的连接。
当设置了 <code class="literal">bind_dn</code> 时， 默认值为 <code class="literal">true</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.size</code>
</span>
</dt>
<dd>
连接池中允许的 LDAP 服务器的最大连接数。
默认值为 <code class="literal">20</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.initial_size</code>
</span>
</dt>
<dd>
在启动时要创建到 LDAP 服务器的初始连接数。默认为 <code class="literal">0</code>。
如果 LDAP 服务器关闭，大于<code class="literal">0</code>的值可能会导致启动失败。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.health_check.enabled</code>
</span>
</dt>
<dd>
启用或禁用连接池中 LDAP 连接的健康检查。 
以指定的时间间隔在后台检查连接。
默认值为 <code class="literal">true</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.health_check.dn</code>
</span>
</dt>
<dd>
健康检查时需要使用的 识别名(dn, distinguished name)。
<span class="remark">原文: The distinguished name that is retrieved as part of the health check.</span>

默认值为 <code class="literal">bind_dn</code> (如果存在)；如果没有，则返回到 <code class="literal">user_search.base_dn</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.health_check.interval</code>
</span>
</dt>
<dd>
对连接池中的连接执行后台检查的时间间隔。默认为 <code class="literal">60s</code>。
</dd>
<dt>
<span class="term">
<code class="literal">group_search.base_dn</code>
</span>
</dt>
<dd>
用于搜索用户所属的组的容器 DN。
当缺少此元素时，Elasticsearch 搜索由用户上设置的<code class="literal">user_group_attribute</code>指定的属性，以确定组成员关系。
</dd>
<dt>
<span class="term">
<code class="literal">group_search.scope</code>
</span>
</dt>
<dd>
指定组搜索应该是<code class="literal">sub_tree</code>、<code class="literal">one_level</code> 还是 <code class="literal">base</code>。
<code class="literal">one_level</code> 搜索直接包含在 <code class="literal">base_dn</code>中的对象。
<code class="literal">sub_tree</code> 搜索 <code class="literal">base_dn</code> 中的所有对象。
<code class="literal">base</code> 指定 <code class="literal">base_dn</code> 是组对象，并且是唯一被考虑的组。
默认值为 <code class="literal">sub_tree</code>。
</dd>
<dt>
<span class="term">
<code class="literal">group_search.filter</code>
</span>
</dt>
<dd>
指定用于查找组的筛选器。
如果未设置，领域将使用属性<code class="literal">member</code>、<code class="literal">memberOf</code> 或 <code class="literal">memberUid</code>搜索 <code class="literal">group</code>、<code class="literal">groupOfNames</code>、<code class="literal">groupOfUniqueNames</code> 或 <code class="literal">posixGroup</code>。
筛选器中的任何<code class="literal">{0}</code>实例都被<code class="literal">group_search.user_attribute</code>中定义的用户属性替换。
</dd>
<dt>
<span class="term">
<code class="literal">group_search.user_attribute</code>
</span>
</dt>
<dd>
指定提取并作为参数提供给过滤器的用户属性。
如果未设置，则用户 DN 被传递到过滤器中。
默认为空。
</dd>
<dt>
<span class="term">
<code class="literal">unmapped_groups_as_roles</code>
</span>
</dt>
<dd>
如果设置为 <code class="literal">true</code>，任何 未映射(unmapped) 的 LDAP 组的名称将用作角色名称并分配给用户。
如果在 <a class="xref" href="mapping-roles.html#mapping-roles-file" title="Using role mapping files">角色映射(role-mapping)文件</a>中没有引用某个组，则该组被视为<em>未映射(unmapped)</em>。
不考虑基于 API 的角色映射。
默认为 <code class="literal">false</code>
</dd>
<dt>
<span class="term">
<code class="literal">files.role_mapping</code>
</span>
</dt>
<dd>
<a class="xref" href="mapping-roles.html" title="Mapping users and groups to roles">YAML 角色映射配置文件</a> 的 <a class="xref" href="security-files.html" title="Security files">位置(location)</a>。
默认值为 <code class="literal">ES_PATH_CONF/role_mapping.yml</code>。
</dd>
<dt>
<span class="term">
<code class="literal">follow_referrals</code>
</span>
</dt>
<dd>
指定 Elasticsearch 是否应该遵循 LDAP 服务器返回的引用(referrals)。  
引用(referrals)是服务器返回的URL，用于继续 LDAP 操作(例如，搜索)。
默认为 <code class="literal">true</code>。
</dd>
<dt>
<span class="term">
<code class="literal">metadata</code>
</span>
</dt>
<dd>
应该从 LDAP 服务器加载的附加 LDAP 属性的列表，它们存储在经过身份验证的用户的元数据字段中。
</dd>
<dt>
<span class="term">
<code class="literal">timeout.tcp_connect</code>
</span>
</dt>
<dd>
建立 LDAP 连接的 TCP 连接超时时间。
<code class="literal">s</code>结尾的表示秒，<code class="literal">ms</code>结尾的表示毫秒。
默认值为 <code class="literal">5s</code> (5秒)。
</dd>
<dt>
<span class="term">
<code class="literal">timeout.tcp_read</code>
</span>
</dt>
<dd>
<span class="Admonishment Admonishment--change">
[<span class="Admonishment-version u-mono u-strikethrough">7.7</span>]
<span class="Admonishment-detail">
在 7.7 中废弃。
</span>
</span> 建立 LDAP 连接后的 TCP 读取超时时间。 
它等价于<code class="literal">timeout.response</code>，但(相比于后者)不再不推荐使用它，且它们不能同时使用。
<code class="literal">s</code>结尾的表示秒，<code class="literal">ms</code>结尾的表示毫秒。
</dd>
<dt>
<span class="term">
<code class="literal">timeout.response</code>
</span>
</dt>
<dd>
等待 LDAP 服务器响应的时间间隔。
<code class="literal">s</code>结尾的表示秒，<code class="literal">ms</code>结尾的表示毫秒。
默认值为 <code class="literal">timeout.ldap_search</code> 的值。
</dd>
<dt>
<span class="term">
<code class="literal">timeout.ldap_search</code>
</span>
</dt>
<dd>
LDAP 搜索的超时时间。
该值在请求中指定，并由接收 LDAP 服务器强制执行。
<code class="literal">s</code>结尾的表示秒，<code class="literal">ms</code>结尾的表示毫秒。
默认值为 <code class="literal">5s</code> (5秒)。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.key</code>
</span>
</dt>
<dd>
<p>
包含私钥的 PEM 编码文件的路径。
</p>
<p>
如果 LDAP 服务器需要客户端身份验证，则将使用该文件。
这个设置不能与 <code class="literal">ssl.keystore.path</code> 同时使用。
</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.key_passphrase</code>
</span>
</dt>
<dd>
用于解密私钥的密码。
由于密钥可能没有加密，因此该值是可选的。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.secure_key_passphrase</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
用于解密私钥的密码。
由于密钥可能没有加密，因此该值是可选的。.
</dd>
<dt>
<span class="term">
<code class="literal">ssl.certificate</code>
</span>
</dt>
<dd>
<p>指定与密钥相关的 PEM 编码证书(或证书链)的路径。</p>
<p>客户端连接时会收到此证书。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.certificate_authorities</code>
</span>
</dt>
<dd>
<p>
应受信任的 PEM 编码证书文件的路径列表。
</p>
<p>此设置不能与 <code class="literal">ssl.truststore.path</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.path</code>
</span>
</dt>
<dd>
<p>
包含私钥和证书的密钥库文件的路径。
</p>
<p>此设置不能与 <code class="literal">ssl.key</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.type</code>
</span>
</dt>
<dd>
密钥库文件的格式，必须是 <code class="literal">jks</code> 或 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.password</code>
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.key_password</code>
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.secure_key_password</code>
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.path</code>
</span>
</dt>
<dd>
<p>
包含要信任的证书的密钥库的路径。
它必须是 Java密钥库(jks) 或 PKCS#12 文件。
</p>
<p>此设置不能与 <code class="literal">ssl.certificate_authorities</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.password</code>
</span>
</dt>
<dd>
信任库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
信任库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.type</code>
</span>
</dt>
<dd>
信任库文件的格式。
对于Java秘钥库格式，使用 <code class="literal">jks</code>。
对于 PKCS#12 文件，使用 <code class="literal">PKCS12</code>。
对于 PKCS#11 令牌, 使用 <code class="literal">PKCS11</code>。
默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.verification_mode</code>
</span>
</dt>
<dd>
<p>
使用 <code class="literal">ldaps</code> 防止中间人攻击和证书伪造时的验证类型。
可用的值有：
</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<code class="literal">full</code>，用于验证所提供的证书是否由可信机构(CA)签名，还验证服务器的主机名(或IP地址)是否与证书中标识的名称匹配。
</li>
<li class="listitem">
<code class="literal">certificate</code>，用于验证所提供的证书是否由可信机构(CA)签名，但不执行任何主机名验证。
</li>
<li class="listitem">
<p>
<code class="literal">none</code>，<em>不验证</em>服务器的证书。
这种模式禁用了 SSL/TLS 的许多安全优势，应该在非常谨慎的考虑之后才使用。
它主要用作尝试解决 TLS 错误时的临时诊断机制；强烈建议不要在生产集群上使用它。
</p>
<p>默认值为 <code class="literal">full</code> </p>
</li>
</ul>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.supported_protocols</code>
</span>
</dt>
<dd>
<p>
支持的协议版本。可用的协议包括：<code class="literal">SSLv2Hello</code>，<code class="literal">SSLv3</code>，<code class="literal">TLSv1</code>，<code class="literal">TLSv1.1</code>，<code class="literal">TLSv1.2</code>，<code class="literal">TLSv1.3</code>。
如果 JVM 的 SSL 提供程序支持 TLSv1.3，则默认值为 <code class="literal">TLSv1.3,TLSv1.2,TLSv1.1</code>；否则，默认值为 <code class="literal">TLSv1.2,TLSv1.1</code>
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>如果 <code class="literal">xpack.security.fips_mode.enabled</code> 为 <code class="literal">true</code>，则不能使用 <code class="literal">SSLv2Hello</code> 或 <code class="literal">SSLv3</code>。参考 <a class="xref" href="fips-140-compliance.html" title="FIPS 140-2">FIPS 140-2</a>。</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.cipher_suites</code>
</span>
</dt>
<dd>
<p>
指定与LDAP服务器通信时应支持的密码套件。
支持的密码套件因使用的 Java 版本而异。例如，对于版本11，默认值为 <code class="literal">TLS_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA256</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA</code>.
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
上面列出的默认密码套件包括 TLSv1.3 密码和需要 <em title="Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files">Java 加密扩展(JCE)无限强度权限策略文件</em>进行256位 AES 加密的密码。
如果 TLSv1.3 不可用，则 TLSv1.3 密码 <code class="literal">TLS_AES_256_GCM_SHA384</code> 和 <code class="literal">TLS_AES_128_GCM_SHA256</code> 不会包括在默认列表中。
如果 256-bit AES 不可用，则名字中有<code class="literal">AES_256</code>的密码不会包含在默认列表中。
最后，AES GCM 在 Java 11 之前的版本中存在已知的性能问题，只有在使用 Java 11 或更高版本时才会包含在默认列表中。
</p>
</div>
</div>
<p>有关更多信息，请参见Oracle的 <a href="https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html#GUID-7093246A-31A3-4304-AC5F-5FB6400405E2" class="ulink" target="_top">Java加密体系结构文档</a> 。</p>
</dd>
<dt>
<span class="term">
<code class="literal">cache.ttl</code>
</span>
</dt>
<dd>
缓存的用户的生存时间。
在这段时间内，用户及其凭证的哈希值将被缓存。
用 Elasticsearch 标准的<a class="xref" href="common-options.html#time-units" title="Time units">time units (时间单位)</a>指定时间段。
默认为 <code class="literal">20m</code> 即 20 分钟。
</dd>
<dt>
<span class="term">
<code class="literal">cache.max_users</code>
</span>
</dt>
<dd>
指定缓存可以包含的最大用户数。
默认为 <code class="literal">100000</code>
</dd>
<dt>
<span class="term">
<code class="literal">cache.hash_algo</code>
</span>
</dt>
<dd>
(专家级设置) 用于缓存在内存中的用户凭据的哈希算法。
参考 <a class="xref" href="security-settings.html#cache-hash-algo" title="Cache hash algorithms">表 1, “缓存哈希算法”</a>.
默认值为 <code class="literal">ssha256</code>。
</dd>
<dt>
<span class="term">
<code class="literal">authentication.enabled</code>
</span>
</dt>
<dd>
如果设置为 <code class="literal">false</code>，则在该领域中禁用对身份验证的支持，这就仅支持用户查找了。
(参考 <a class="xref" href="run-as-privilege.html" title="Submitting requests on behalf of other users">运行方式 (run as)</a> 和 <a class="xref" href="realm-chains.html#authorization_realms" title="Delegating authorization to another realm">授权领域</a> 功能)。
默认为 <code class="literal">true</code>。
</dd>
</dl>
</div>
<h5>
<a id="ref-ad-settings"></a>Active Directory(活动目录/域控制器) 领域设置
</h5>
<p><code class="literal">type</code> 设置必须配置为 <code class="literal">active_directory</code>。 
除了<a class="xref" href="security-settings.html#ref-realm-settings" title="Settings valid for all realms">对所有领域都有效的设置</a>之外，你还可以指定以下可选设置:
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">url</code>
</span>
</dt>
<dd>
<p>
<code class="literal">ldap[s]://&lt;server&gt;:&lt;port&gt;</code> 格式的一个或多个 LDAP url地址。
默认为 <code class="literal">ldap://&lt;domain_name&gt;:389</code>。
使用 SSL/TLS 连接或使用自定义端口时，必须设置。
</p>
<p>
如果要提供多个 url 地址，使用 YAML 数组 (<code class="literal">["ldap://server1:636", "ldap://server2:636"]</code>) 或者逗号分隔的字符串 (<code class="literal">"ldap://server1:636, ldap://server2:636"</code>)。
</p>
<p>
虽然两者都受支持，但是不能混合使用<code class="literal">ldap</code>和<code class="literal">ldaps</code>协议。
</p>
<p>
如果 URL 未指定，Elasticsearch 会使用默认值 <code class="literal">ldap://&lt;domain_name&gt;:389</code>。
此默认值使用 <code class="literal">domain_name</code> 的值，并假设到端口 389 的连接未加密。
</p>
</dd>
<dt>
<span class="term">
<code class="literal">load_balance.type</code>
</span>
</dt>
<dd>
定义了多个 LDAP url地址时使用的行为。
关于支持的值，请参考 <a class="xref" href="security-settings.html#load-balancing" title="Load balancing and failover">负载均衡和故障转移类型</a>。
默认值为 <code class="literal">failover</code>
</dd>
<dt>
<span class="term">
<code class="literal">load_balance.cache_ttl</code>
</span>
</dt>
<dd>
当负载均衡的类型为 <code class="literal">dns_failover</code> 或 <code class="literal">dns_round_robin</code> 时，这个设置用来控制 DNS 查找缓存的时间。
默认值为 <code class="literal">1h</code>
</dd>
<dt>
<span class="term">
<code class="literal">domain_name</code>
</span>
</dt>
<dd>
Active Directory 的 域名(domain name)。 
如果 <code class="literal">url</code> 和 <code class="literal">user_search.base_dn</code> 设置未指定，集群可以从该设置中获取这些值。必需的。
</dd>
<dt>
<span class="term">
<code class="literal">bind_dn</code>
</span>
</dt>
<dd>
用于绑定到 Active Directory 并执行搜索的用户的 DN。
默认为空。
由于潜在的安全影响，<code class="literal">bind_dn</code> 没有通过 <a class="xref" href="cluster-nodes-info.html" title="Nodes info API">节点信息API</a> 公开。
</dd>
<dt>
<span class="term">
<code class="literal">bind_password</code>
</span>
</dt>
<dd>
<span class="Admonishment Admonishment--change">
[<span class="Admonishment-version u-mono u-strikethrough">6.3</span>]
<span class="Admonishment-detail">
在 6.3 中废弃。
</span>
</span> 使用 <code class="literal">secure_bind_password</code> 替代之。
用于绑定到 Active Directory 的用户的密码。 
默认为空。
由于潜在的安全影响，<code class="literal">bind_password</code> 没有通过 <a class="xref" href="cluster-nodes-info.html" title="Nodes info API">节点信息API</a> 公开。
</dd>
<dt>
<span class="term">
<code class="literal">secure_bind_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
用于绑定到 Active Directory 的用户的密码。 
默认为空。
</dd>
<dt>
<span class="term">
<code class="literal">unmapped_groups_as_roles</code>
</span>
</dt>
<dd>
如果设置为 <code class="literal">true</code>，任何 未映射(unmapped) 的 Active Directory 组的名称将用作角色名称并分配给用户。
如果在 <a class="xref" href="mapping-roles.html#mapping-roles-file" title="Using role mapping files">角色映射(role-mapping)文件</a>中没有引用某个组，则该组被视为<em>未映射(unmapped)</em>。
不考虑基于 API 的角色映射。
默认为 <code class="literal">false</code>。
</dd>
<dt>
<span class="term">
<code class="literal">files.role_mapping</code>
</span>
</dt>
<dd>
<a class="xref" href="mapping-roles.html" title="Mapping users and groups to roles">YAML 角色映射配置文件</a> 的 <a class="xref" href="security-files.html" title="Security files">位置(location)</a>。
默认值为 <code class="literal">ES_PATH_CONF/role_mapping.yml</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.base_dn</code>
</span>
</dt>
<dd>
搜索用户的上下文。默认为 Active Directory 域的根目录。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.scope</code>
</span>
</dt>
<dd>
指定用户搜索应该是<code class="literal">sub_tree</code>、<code class="literal">one_level</code> 还是 <code class="literal">base</code>。
<code class="literal">one_level</code> 搜索直接包含在 <code class="literal">base_dn</code>中的用户。
<code class="literal">sub_tree</code> 搜索 <code class="literal">base_dn</code> 中的所有对象。
<code class="literal">base</code> 指定 <code class="literal">base_dn</code> 是用户对象，并且是唯一被考虑的用户。
默认值为 <code class="literal">sub_tree</code>
</dd>
<dt>
<span class="term">
<code class="literal">user_search.filter</code>
</span>
</dt>
<dd>
指定用于查找给定用户名的用户的筛选器。
默认筛选器使用<code class="literal">sAMAccountName</code>或<code class="literal">userPrincipalName</code>查找 <code class="literal">user</code>对象。
如果指定，则必须是一个有效的 LDAP 用户搜索过滤器。
比如 <code class="literal">(&amp;(objectClass=user)(sAMAccountName={0}))</code>。
更多信息参考 <a href="https://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx" class="ulink" target="_top">搜索过滤器语法(Search Filter Syntax)</a>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.upn_filter</code>
</span>
</dt>
<dd>
指定用于在给定用户主体名称的情况下查找用户的筛选器。
默认筛选器使用 <code class="literal">userPrincipalName</code> 查找 <code class="literal">user</code> 对象。
如果指定，则必须是一个有效的 LDAP 用户搜索过滤器。
比如 <code class="literal">(&amp;(objectClass=user)(userPrincipalName={1}))</code>。
<code class="literal">{1}</code> 是用户提供的完整用户主体名称。
更多信息参考 <a href="https://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx" class="ulink" target="_top">搜索过滤器语法(Search Filter Syntax)</a>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.down_level_filter</code>
</span>
</dt>
<dd>
指定用于查找给定了下级登录名(DOMAIN\user)的用户的筛选器。
默认筛选器使用 <code class="literal">sAMAccountName</code> 在指定的域内查找 <code class="literal">user</code> 对象。
如果指定，则必须是一个有效的 LDAP 用户搜索过滤器。
比如 <code class="literal">(&amp;(objectClass=user)(sAMAccountName={0}))</code>。
更多信息参考 <a href="https://msdn.microsoft.com/en-us/library/aa746475(v=vs.85).aspx" class="ulink" target="_top">搜索过滤器语法(Search Filter Syntax)</a>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.enabled</code>
</span>
</dt>
<dd>
为用户搜索启用或禁用连接池。
禁用时，每次搜索都会创建一个新连接。
当提供了 <code class="literal">bind_dn</code>时，默认值为 <code class="literal">true</code>
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.size</code>
</span>
</dt>
<dd>
连接池中允许的到 Active Directory 服务器的最大连接数。
默认为 <code class="literal">20</code>
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.initial_size</code>
</span>
</dt>
<dd>
在启动时要创建到 Active Directory 服务器的初始连接数。默认为 <code class="literal">0</code>。
如果 Active Directory 服务器关闭，大于<code class="literal">0</code>的值可能会导致启动失败。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.health_check.enabled</code>
</span>
</dt>
<dd>
启用或禁用连接池中 Active Directory 连接的健康检查。
以指定的时间间隔在后台检查连接。
默认值为 <code class="literal">true</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.health_check.dn</code>
</span>
</dt>
<dd>
健康检查时需要使用的 识别名(dn, distinguished name)。
<span class="remark">原文: The distinguished name that is retrieved as part of the health check.</span>
默认值为 <code class="literal">bind_dn</code> (如果存在)；如果没有，则返回到 <code class="literal">user_search.base_dn</code>。
</dd>
<dt>
<span class="term">
<code class="literal">user_search.pool.health_check.interval</code>
</span>
</dt>
<dd>
对连接池中的连接执行后台检查的时间间隔。默认为 <code class="literal">60s</code>。
</dd>
<dt>
<span class="term">
<code class="literal">group_search.base_dn</code>
</span>
</dt>
<dd>
用于搜索用户所属组的上下文。
默认为 Active Directory 域的根目录。
</dd>
<dt>
<span class="term">
<code class="literal">group_search.scope</code>
</span>
</dt>
<dd>
指定组搜索应该是<code class="literal">sub_tree</code>、<code class="literal">one_level</code> 还是 <code class="literal">base</code>。
<code class="literal">one_level</code> 搜索直接包含在 <code class="literal">base_dn</code>中的组。
<code class="literal">sub_tree</code> 搜索 <code class="literal">base_dn</code> 中的所有对象。
<code class="literal">base</code> 指定 <code class="literal">base_dn</code> 是组对象，并且是唯一被考虑的组。
默认值为 <code class="literal">sub_tree</code>。
</dd>
<dt>
<span class="term">
<code class="literal">metadata</code>
</span>
</dt>
<dd>
应该从 LDAP 服务器加载的附加 LDAP 属性的列表，它们存储在经过身份验证的用户的元数据字段中。
</dd>
<dt>
<span class="term">
<code class="literal">timeout.tcp_connect</code>
</span>
</dt>
<dd>
建立 LDAP 连接的 TCP 连接超时时间。
<code class="literal">s</code>结尾的表示秒，<code class="literal">ms</code>结尾的表示毫秒。
默认值为 <code class="literal">5s</code> (5秒)。
</dd>
<dt>
<span class="term">
<code class="literal">timeout.tcp_read</code>
</span>
</dt>
<dd>
<span class="Admonishment Admonishment--change">
[<span class="Admonishment-version u-mono u-strikethrough">7.7</span>]
<span class="Admonishment-detail">
在 7.7 中废弃。
</span>
</span> 建立 LDAP 连接后的 TCP 读取超时时间。 
它等价于<code class="literal">timeout.response</code>，但(相比于后者)不再推荐使用它，且它们不能同时使用。
<code class="literal">s</code>结尾的表示秒，<code class="literal">ms</code>结尾的表示毫秒。
默认值为 <code class="literal">timeout.ldap_search</code> 的值。
</dd>
<dt>
<span class="term">
<code class="literal">timeout.response</code>
</span>
</dt>
<dd>
等待 AD(Active Directory) 服务器响应的时间间隔。
<code class="literal">s</code>结尾的表示秒，<code class="literal">ms</code>结尾的表示毫秒。
默认值为 <code class="literal">timeout.ldap_search</code> 的值。
</dd>
<dt>
<span class="term">
<code class="literal">timeout.ldap_search</code>
</span>
</dt>
<dd>
LDAP 搜索的超时时间。
该值在请求中指定，并由接收 LDAP 服务器强制执行。
<code class="literal">s</code>结尾的表示秒，<code class="literal">ms</code>结尾的表示毫秒。
默认值为 <code class="literal">5s</code> (5秒)。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.certificate</code>
</span>
</dt>
<dd>
<p>指定与密钥相关的 PEM 编码证书(或证书链)的路径。</p>
<p>客户端连接时会收到此证书。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.certificate_authorities</code>
</span>
</dt>
<dd>
<p>要信任的PEM编码证书路径的列表。</p>
<p>此设置不能与 <code class="literal">ssl.truststore.path</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.key</code>
</span>
</dt>
<dd>
<p>
包含私钥的 PEM 编码文件的路径。
</p>
<p>
如果 Active Directory 服务器需要客户端身份验证，则将使用该文件。
这个设置不能与 <code class="literal">ssl.keystore.path</code> 同时使用。
</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.key_passphrase</code>
</span>
</dt>
<dd>
用于解密私钥的密码。
由于密钥可能没有加密，因此该值是可选的。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.secure_key_passphrase</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
用于解密私钥的密码。
由于密钥可能没有加密，因此该值是可选的。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.key_password</code>
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.secure_key_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.password</code>
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.secure_keystore.password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库的密码。
</dd>
</dl>
</div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">ssl.keystore.path</code>
</span>
</dt>
<dd>
<p>
包含私钥和证书的密钥库文件的路径。
</p>
<p>此设置不能与 <code class="literal">ssl.key</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.type</code>
</span>
</dt>
<dd>
密钥库文件的格式，必须是 <code class="literal">jks</code> 或 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.password</code>
</span>
</dt>
<dd>
信任库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">Secure</a>)
</span>
</dt>
<dd>
信任库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.path</code>
</span>
</dt>
<dd>
<p>
包含要信任的证书的密钥库的路径。
它必须是 Java密钥库(jks) 或 PKCS#12 文件。
</p>
<p>此设置不能与 <code class="literal">ssl.certificate_authorities</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.type</code>
</span>
</dt>
<dd>
信任库文件的格式。
对于Java秘钥库格式，使用 <code class="literal">jks</code>。
对于 PKCS#12 文件，使用 <code class="literal">PKCS12</code>。
对于 PKCS#11 令牌, 使用 <code class="literal">PKCS11</code>。
默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.verification_mode</code>
</span>
</dt>
<dd>
<p>
使用 <code class="literal">ldaps</code> 防止中间人攻击和证书伪造时的验证类型。
可用的值有：
</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<code class="literal">full</code>，用于验证所提供的证书是否由可信机构(CA)签名，还验证服务器的主机名(或IP地址)是否与证书中标识的名称匹配。
</li>
<li class="listitem">
<code class="literal">certificate</code>，用于验证所提供的证书是否由可信机构(CA)签名，但不执行任何主机名验证。
</li>
<li class="listitem">
<p>
<code class="literal">none</code>，<em>不验证</em>服务器的证书。
这种模式禁用了 SSL/TLS 的许多安全优势，应该在非常谨慎的考虑之后才使用。
它主要用作尝试解决 TLS 错误时的临时诊断机制；强烈建议不要在生产集群上使用它。
</p>
<p>默认值为 <code class="literal">full</code> </p>
</li>
</ul>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.supported_protocols</code>
</span>
</dt>
<dd>
<p>
支持的协议版本。可用的协议包括：<code class="literal">SSLv2Hello</code>，<code class="literal">SSLv3</code>，<code class="literal">TLSv1</code>，<code class="literal">TLSv1.1</code>，<code class="literal">TLSv1.2</code>，<code class="literal">TLSv1.3</code>。
如果 JVM 的 SSL 提供程序支持 TLSv1.3，则默认值为 <code class="literal">TLSv1.3,TLSv1.2,TLSv1.1</code>；否则，默认值为 <code class="literal">TLSv1.2,TLSv1.1</code>
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>如果 <code class="literal">xpack.security.fips_mode.enabled</code> 为 <code class="literal">true</code>，则不能使用 <code class="literal">SSLv2Hello</code> 或 <code class="literal">SSLv3</code>。参考 <a class="xref" href="fips-140-compliance.html" title="FIPS 140-2">FIPS 140-2</a>。</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.cipher_suites</code>
</span>
</dt>
<dd>
<p>
指定与 Active Directory 服务器通信时应支持的密码套件。
支持的密码套件因使用的 Java 版本而异。例如，对于版本11，默认值为 <code class="literal">TLS_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA256</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA</code>.
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
上面列出的默认密码套件包括 TLSv1.3 密码和需要 <em title="Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files">Java 加密扩展(JCE)无限强度权限策略文件</em>进行256位 AES 加密的密码。
如果 TLSv1.3 不可用，则 TLSv1.3 密码 <code class="literal">TLS_AES_256_GCM_SHA384</code> 和 <code class="literal">TLS_AES_128_GCM_SHA256</code> 不会包括在默认列表中。
如果 256-bit AES 不可用，则名字中有<code class="literal">AES_256</code>的密码不会包含在默认列表中。
最后，AES GCM 在 Java 11 之前的版本中存在已知的性能问题，只有在使用 Java 11 或更高版本时才会包含在默认列表中。
</p>
</div>
</div>
<p>有关更多信息，请参见Oracle的 <a href="https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html#GUID-7093246A-31A3-4304-AC5F-5FB6400405E2" class="ulink" target="_top">Java加密体系结构文档</a> 。</p>
</dd>
<dt>
<span class="term">
<code class="literal">cache.ttl</code>
</span>
</dt>
<dd>
缓存的用户的生存时间。
在这段时间内，用户及其凭证的哈希值将被缓存。
用 Elasticsearch 标准的<a class="xref" href="common-options.html#time-units" title="Time units">time units (时间单位)</a>指定时间段。
默认为 <code class="literal">20m</code> 即 20 分钟。
</dd>
<dt>
<span class="term">
<code class="literal">cache.max_users</code>
</span>
</dt>
<dd>
指定缓存可以包含的最大用户数。
默认为 <code class="literal">100000</code>
</dd>
<dt>
<span class="term">
<code class="literal">cache.hash_algo</code>
</span>
</dt>
<dd>
(专家级设置) 用于缓存在内存中的用户凭据的哈希算法。
参考 <a class="xref" href="security-settings.html#cache-hash-algo" title="Cache hash algorithms">表 1, “缓存哈希算法”</a>.
默认值为 <code class="literal">ssha256</code>。
</dd>
<dt>
<span class="term">
<code class="literal">authentication.enabled</code>
</span>
</dt>
<dd>
如果设置为 <code class="literal">false</code>，则在该领域中禁用对身份验证的支持，这就仅支持用户查找了。
(参考 <a class="xref" href="run-as-privilege.html" title="Submitting requests on behalf of other users">运行方式 (run as)</a> 和 <a class="xref" href="realm-chains.html#authorization_realms" title="Delegating authorization to another realm">授权领域</a> 功能)。
默认为 <code class="literal">true</code>
</dd>
<dt>
<span class="term">
<code class="literal">follow_referrals</code>
</span>
</dt>
<dd>
指定 Elasticsearch 是否应该遵循 LDAP 服务器返回的引用(referrals)。  
引用(referrals)是服务器返回的URL，用于继续 LDAP 操作(例如，<code class="literal">搜索(search)</code>)。
默认为 <code class="literal">true</code>。
</dd>
</dl>
</div>
<h5>
<a id="ref-pki-settings"></a>PKI 领域设置
</h5>
<p><code class="literal">type</code> 必须设置为 <code class="literal">pki</code>。
除了<a class="xref" href="security-settings.html#ref-realm-settings" title="Settings valid for all realms">对所有realm都有效的设置</a>之外，你还可以指定以下可选设置:
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">username_pattern</code>
</span>
</dt>
<dd>
用于从证书 DN 中提取用户名的正则表达式模式。
第一个匹配组用作用户名。
默认为 <code class="literal">CN=(.*?)(?:,\|$)</code>
</dd>
<dt>
<span class="term">
<code class="literal">certificate_authorities</code>
</span>
</dt>
<dd>
PEM 证书文件的路径列表，用于验证用户的证书是否受信任。
默认是为 SSL 配置的受信任证书。  
此设置不能与 <code class="literal">truststore.path</code> 一起使用。
</dd>
<dt>
<span class="term">
<code class="literal">truststore.algorithm</code>
</span>
</dt>
<dd>
信任库的算法。默认为 <code class="literal">SunX509</code>
</dd>
<dt>
<span class="term">
<code class="literal">truststore.password</code>
</span>
</dt>
<dd>
信任库的密码。
</dd>
</dl>
</div>
<p>如果设置了 <code class="literal">truststore.path</code>，则此设置是必须的。</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">truststore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">Secure</a>)
</span>
</dt>
<dd>
信任库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">truststore.path</code>
</span>
</dt>
<dd>
信任库使用的路径。
默认是为SSL配置的受信任证书。
此设置不能与 <code class="literal">certificate_authorities</code> 一起使用。
</dd>
<dt>
<span class="term">
<code class="literal">files.role_mapping</code>
</span>
</dt>
<dd>
<a class="xref" href="mapping-roles.html" title="Mapping users and groups to roles">YAML 角色映射配置文件</a> 的 <a class="xref" href="security-files.html" title="Security files">位置(location)</a>。
默认值为 <code class="literal">ES_PATH_CONF/role_mapping.yml</code>。
</dd>
<dt>
<span class="term">
<code class="literal">authorization_realms</code>
</span>
</dt>
<dd>
委托授权时应咨询的领域的名称。
如果使用此设置，则 KPI 领域不执行角色映射，而是从列出的领域加载用户。
参考 <a class="xref" href="realm-chains.html#authorization_realms" title="Delegating authorization to another realm">将授权委托给另一个领域</a>。
</dd>
<dt>
<span class="term">
<code class="literal">cache.ttl</code>
</span>
</dt>
<dd>
缓存的用户的生存时间。
在这段时间内，用户及其凭证的哈希值将被缓存。
用 Elasticsearch 标准的<a class="xref" href="common-options.html#time-units" title="Time units">time units (时间单位)</a>指定时间段。
默认为 <code class="literal">20m</code> 即 20 分钟。
</dd>
<dt>
<span class="term">
<code class="literal">cache.max_users</code>
</span>
</dt>
<dd>
指定缓存可以包含的最大用户数。
默认为 <code class="literal">100000</code>
</dd>
<dt>
<span class="term">
<code class="literal">delegation.enabled</code>
</span>
</dt>
<dd>
通常，为了让客户端通过 PKI 领域的身份验证，它们必须直接连接到 Elasticsearch。
也就是说，它们不能通过代理，因为代理会终止 TLS 连接。

为了允许一个<span class="strong strong"><strong>可信(trusted)</strong></span>且<span class="strong strong"><strong>智能的(smart)</strong></span>代理（如 Kibana）在 Elasticsearch 之前进行访问并终止 TLS 连接，但仍然允许客户端通过该领域在 Elasticsearch 上进行身份验证，需要将此设置切换为<code class="literal">true</code>。

默认为 <code class="literal">false</code>。

如果启用了 委托(delegation)，则必须定义 <code class="literal">truststore.path</code> 或 <code class="literal">certificate_authorities</code>。

详情请参考 <a class="xref" href="pki-realm.html#pki-realm-for-proxied-clients" title="PKI authentication for clients connecting to Kibana">给KPI realm配置身份验证</a>。
</dd>
</dl>
</div>
<h5>
<a id="ref-saml-settings"></a>SAML 领域设置
</h5>
<p>
<code class="literal">type</code> 必须设置为 <code class="literal">saml</code>。
除了<a class="xref" href="security-settings.html#ref-realm-settings" title="Settings valid for all realms">对所有领域都有效的设置</a>之外，你还可以指定以下可选设置:
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">idp.entity_id</code>
</span>
</dt>
<dd>
SAML 身份提供者<span class="remark">(idp, Identity Provider)</span>的实体ID(Entity ID)。
一个实体ID是一个URL，限制最大长度为1024个字符。
它可以是一个 URL (<a href="https://idp.example.com/" class="ulink" target="_top">https://idp.example.com/</a>) 或者一个 URN (<code class="literal">urn:example.com:idp</code>)，且可以在配置文件或者身份提供者的SAML元数据中找到。
</dd>
<dt>
<span class="term">
<code class="literal">idp.metadata.path</code>
</span>
</dt>
<dd>
描述身份提供者的功能和配置的 SAML 2.0 元数据文件的路径<em>(推荐)</em> 或 URL。
如果提供的是路径，则被解析为相对于 Elasticsearch 配置目录的路径。
如果提供的是URL，则必须是一个 <code class="literal">file</code> URL 或者<code class="literal">https</code> URL。
Elasticsearch 自动轮询这个元数据资源，并在检测到更改时重新加载 IdP 配置。
基于文件的资源的轮询频率由 Elasticsearch 全局设置 <code class="literal">resource.reload.interval.high</code> 决定，默认为5秒。
HTTPS 资源的轮询频率由 <code class="literal">idp.metadata.http.refresh</code> 设置决定。
</dd>
<dt>
<span class="term">
<code class="literal">idp.metadata.http.refresh</code>
</span>
</dt>
<dd>
检查 <code class="literal">https</code> 元数据更改的频率。默认为<code class="literal">1h</code> (1小时)。
</dd>
<dt>
<span class="term">
<code class="literal">idp.use_single_logout</code>
</span>
</dt>
<dd>
是否使用身份提供程序的 单一注销服务<span class="remark">(Single Logout service)</span> (如果IdP元数据文件中存在)。
默认值为 <code class="literal">true</code>
</dd>
<dt>
<span class="term">
<code class="literal">sp.entity_id</code>
</span>
</dt>
<dd>
SAML 服务提供者<span class="remark">(sp, service provider)</span> 的实体ID。它应该是一个 URL。
建议使用 Kibana 实例的基本URL，比如 <code class="literal">https://kibana.example.com/</code>。
</dd>
<dt>
<span class="term">
<code class="literal">sp.acs</code>
</span>
</dt>
<dd>
Kibana 中的 断言消费者服务<span class="remark">(acs, Assertion Consumer Service)</span> 的 URL。
通常，这是你的 Kibana 服务器的 "api/security/v1/saml" 终端，比如 <code class="literal">https://kibana.example.com/api/security/v1/saml</code>。
</dd>
<dt>
<span class="term">
<code class="literal">sp.logout</code>
</span>
</dt>
<dd>
Kibana 中的 单一注销服务<span class="remark">(Single Logout service)</span> 的 URL。
通常，这是你的 Kibana 服务器的"logout"终端，比如 <code class="literal">https://kibana.example.com/logout</code>。
</dd>
<dt>
<span class="term">
<code class="literal">attributes.principal</code>
</span>
</dt>
<dd>
包含用户主体(用户名)的 SAML 属性的名称。
</dd>
<dt>
<span class="term">
<code class="literal">attributes.groups</code>
</span>
</dt>
<dd>
包含用户组的 SAML 属性的名称。
</dd>
<dt>
<span class="term">
<code class="literal">attributes.name</code>
</span>
</dt>
<dd>
包含用户全名的 SAML 属性的名称。
</dd>
<dt>
<span class="term">
<code class="literal">attributes.mail</code>
</span>
</dt>
<dd>
包含用户email地址的 SAML 属性的名称。
</dd>
<dt>
<span class="term">
<code class="literal">attributes.dn</code>
</span>
</dt>
<dd>
包含用户的 X.50 <em>识别名</em><span class="remark">(dn, Distinguished Name)</span> 的 SAML 属性的名称。
</dd>
<dt>
<span class="term">
<code class="literal">attribute_patterns.principal</code>
</span>
</dt>
<dd>
在应用于用户的 <em>主体</em><span class="remark">principal</span> 属性之前，与<code class="literal">attributes.pattern</code>指定的 SAML 属性匹配的 Java 正则表达式。
属性值必须与模式匹配，并且第一个 <em>捕获组</em><span class="remark">(capturing group)</span> 的值用作主体。
比如，<code class="literal">^([^@]+)@example\\.com$</code> 匹配来自 "example.com" 域的email地址，并将 <a href="https://www.jochentopf.com/email/chars.html" rel="nofollow">local-part</a><span class="remark">(就是@前面的部分内容)</span>作为主体。
</dd>
<dt>
<span class="term">
<code class="literal">attribute_patterns.groups</code>
</span>
</dt>
<dd>
每个 <code class="literal">attribute_patterns.principal</code>，但<em>group</em> 属性除外。
</dd>
<dt>
<span class="term">
<code class="literal">attribute_patterns.name</code>
</span>
</dt>
<dd>
每个 <code class="literal">attribute_patterns.principal</code>，但<em>name</em> 属性除外。
</dd>
<dt>
<span class="term">
<code class="literal">attribute_patterns.mail</code>
</span>
</dt>
<dd>
每个 <code class="literal">attribute_patterns.principal</code>，但<em>mail</em> 属性除外。
</dd>
<dt>
<span class="term">
<code class="literal">attribute_patterns.dn</code>
</span>
</dt>
<dd>
每个 <code class="literal">attribute_patterns.principal</code>，但<em>dn</em> 属性除外。
</dd>
<dt>
<span class="term">
<code class="literal">nameid_format</code>
</span>
</dt>
<dd>
要求IdP对当前用户进行身份验证时应请求的 NameID 的格式。
默认值为请求 <em>transient</em> 名称 (<code class="literal">urn:oasis:names:tc:SAML:2.0:nameid-format:transient</code>)。
</dd>
<dt>
<span class="term">
<code class="literal">nameid.allow_create</code>
</span>
</dt>
<dd>
身份验证请求中的<code class="literal">NameIdPolicy</code>元素的<code class="literal">AllowCreate</code>属性的值。
默认值为 <code class="literal">false</code>
</dd>
<dt>
<span class="term">
<code class="literal">nameid.sp_qualifier</code>
</span>
</dt>
<dd>
身份验证请求中的 <code class="literal">NameIdPolicy</code> 元素的 <code class="literal">SPNameQualifier</code> 属性的值。
默认是不包含 <code class="literal">SPNameQualifier</code> 属性的。
</dd>
<dt>
<span class="term">
<code class="literal">force_authn</code>
</span>
</dt>
<dd>
要求IdP对当前用户进行身份验证时是否要设置 <code class="literal">ForceAuthn</code> 属性。
如果设置为 <code class="literal">true</code>，则要求IdP验证用户的身份，而不考虑他们可能拥有的任何现有会话。
默认为 <code class="literal">false</code>
</dd>
<dt>
<span class="term">
<code class="literal">populate_user_metadata</code>
</span>
</dt>
<dd>
是否用 SAML 属性提供的值填充 Elasticsearch 用户的元数据。
默认值为 <code class="literal">true</code>
</dd>
<dt>
<span class="term">
<code class="literal">authorization_realms</code>
</span>
</dt>
<dd>
委托授权时应咨询的领域的名称。
如果使用此设置，则 SAML 领域不执行角色映射，而是从列出的领域加载用户。
参考 <a class="xref" href="realm-chains.html#authorization_realms" title="Delegating authorization to another realm">将授权委托给另一个领域</a>。
</dd>
<dt>
<span class="term">
<code class="literal">allowed_clock_skew</code>
</span>
</dt>
<dd>
IdP 时钟和 Elasticsearch 节点时钟之间可以容忍的最大偏差量。
默认值为 <code class="literal">3m</code> (3分钟)
</dd>
<dt>
<span class="term">
<code class="literal">req_authn_context_class_ref</code>
</span>
</dt>
<dd>
<p>
请求IdP对当前用户进行身份验证时，要包含在请求的 身份验证上下文<span class="remark">(Authentication Context)</span> 中的 身份验证上下文类引用<span class="remark">(Authentication Context Class Reference)</span> 值的逗号分隔列表。
相应的身份验证响应的身份验证上下文应该包含至少一个请求的值。  
</p>
<p>更多信息参考 <a class="xref" href="saml-guide-authentication.html#req-authn-context" title="Requesting specific authentication methods">请求特定的身份验证方法</a>。</p>
</dd>
</dl>
</div>
<h5>
<a id="ref-saml-signing-settings"></a>SAML 领域签名设置
</h5>
<p>
如果配置了签名密钥(即设置了<code class="literal">signing.key</code>或<code class="literal">signing.keystore.path</code>)，那么 Elasticsearch 会对传出的 SAML 消息进行签名。
可以使用以下设置来配置签名：
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">signing.saml_messages</code>
</span>
</dt>
<dd>
应签名的SAML消息类型列表，或使用<code class="literal">*</code>表示对所有消息进行签名。
列表中的每个元素都应该是SAML XML元素的本地名称。
支持的元素类型有<code class="literal">AuthnRequest</code>、<code class="literal">LogoutRequest</code> 及 <code class="literal">LogoutResponse</code>。
还必须同时指定了 <code class="literal">signing.key</code> 或 <code class="literal">signing.keystore.path</code> 才有效。
默认值为 <code class="literal">*</code>
</dd>
<dt>
<span class="term">
<code class="literal">signing.key</code>
</span>
</dt>
<dd>
指定用于SAML消息签名的PEM编码私钥的路径。
<code class="literal">signing.key</code> 和 <code class="literal">signing.keystore.path</code> 不能同时使用。
</dd>
<dt>
<span class="term">
<code class="literal">signing.secure_key_passphrase</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
用于解密加密过的PEM编码私钥(<code class="literal">signing.key</code>)的密码。
</dd>
<dt>
<span class="term">
<code class="literal">signing.certificate</code>
</span>
</dt>
<dd>
指定对应于<code class="literal">signing.key</code>的PEM编码证书(或证书链)的路径。
该证书还必须包含在 服务提供者<span class="remark">(Service Provider)</span> 的元数据中，或者在 IdP 中手动配置，以允许签名验证。
只有设置了<code class="literal">signing.key</code>，才能使用此设置。
</dd>
<dt>
<span class="term">
<code class="literal">signing.keystore.path</code>
</span>
</dt>
<dd>
包含私钥和证书的密钥库的路径。
它必须是 Java密钥库(jks) 或 PKCS#12 文件。
此设置不能与 <code class="literal">signing.key</code> 同时使用。
</dd>
<dt>
<span class="term">
<code class="literal">signing.keystore.type</code>
</span>
</dt>
<dd>
<code class="literal">signing.keystore.path</code>中的密钥库的类型，必须是 <code class="literal">jks</code> 或 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">signing.keystore.alias</code>
</span>
</dt>
<dd>
密钥库中用于SAML消息签名的密钥的别名。
如果密钥库包含多个私钥，则必须指定此设置。
</dd>
<dt>
<span class="term">
<code class="literal">signing.keystore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
<code class="literal">signing.keystore.path</code>中密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">signing.keystore.secure_key_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库(<code class="literal">signing.keystore.path</code>中密钥的密码。
默认值为密钥库的密码。
</dd>
</dl>
</div>
<h5>
<a id="ref-saml-encryption-settings"></a>SAML 领域加密设置
</h5>
<p>
如果配置了加密密钥(即设置了 <code class="literal">encryption.key</code> 或 <code class="literal">encryption.keystore.path</code> )，那么 Elasticsearch 会在生成元数据时发布加密证书，并尝试解密传入的 SAML 内容。
可以使用以下设置来配置加密:
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">encryption.key</code>
</span>
</dt>
<dd>
用于SAML消息解密的PEM编码私钥的路径。
<code class="literal">encryption.key</code> 和 <code class="literal">encryption.keystore.path</code> 不能同时使用。
</dd>
<dt>
<span class="term">
<code class="literal">encryption.secure_key_passphrase</code> (<a class="xref" href="secure-settings.html" title="Secure settings">Secure</a>)
</span>
</dt>
<dd>
用于解密加密过的PEM编码私钥(<code class="literal">encryption.key</code>)的密码。
</dd>
<dt>
<span class="term">
<code class="literal">encryption.certificate</code>
</span>
</dt>
<dd>
与<code class="literal">encryption.key</code>关联的PEM编码证书(或证书链)的路径。
该证书还必须包含在 服务提供者<span class="remark">(Service Provider)</span> 的元数据中，或者在 IdP 中手动配置，以允许消息加密。
只有设置了<code class="literal">encryption.key</code>，才能使用此设置。
</dd>
<dt>
<span class="term">
<code class="literal">encryption.keystore.path</code>
</span>
</dt>
<dd>
包含私钥和证书的密钥库的路径。
它必须是 Java密钥库(jks) 或 PKCS#12 文件。
此设置不能与 <code class="literal">encryption.key</code> 同时使用。
</dd>
<dt>
<span class="term">
<code class="literal">encryption.keystore.type</code>
</span>
</dt>
<dd>
密钥库(<code class="literal">encryption.keystore.path</code>)的类型，必须是 <code class="literal">jks</code> 或者 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">encryption.keystore.alias</code>
</span>
</dt>
<dd>
密钥库(<code class="literal">encryption.keystore.path</code>)中用于解密SAML消息的密钥的别名。
如果未指定，密钥库中所有兼容的密钥对都将被视为解密的候选密钥。
<dt>
<span class="term">
<code class="literal">encryption.keystore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库(<code class="literal">encryption.keystore.path</code>)的密码。
</dd>
<dt>
<span class="term">
<code class="literal">encryption.keystore.secure_key_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库(<code class="literal">encryption.keystore.path</code>)中的密钥的密码。
只支持单个密码。
如果你使用了多个解密密钥，则它们不能有单独的密码。
</dd>
</dl>
</div>
<h5>
<a id="ref-saml-ssl-settings"></a>SAML 领域 SSL 设置
</h5>
<p>
如果你通过SSL/TLS加载IdP元数据(即<code class="literal">idp.metadata.path</code>是一个使用<code class="literal">https</code>协议的URL)，以下设置可用于配置SSL。
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>除了通过https加载元数据之外，这些设置不会用于任何目的。</p>
</div>
</div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">ssl.key</code>
</span>
</dt>
<dd>
<p>
包含私钥的 PEM 编码文件的路径。
</p>
<p>
如果要求 HTTP 客户端身份验证，则将使用该文件。
这个设置不能与 <code class="literal">ssl.keystore.path</code> 同时使用。
</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.key_passphrase</code>
</span>
</dt>
<dd>
<p>
用于解密私钥的密码。
由于密钥可能没有加密，因此该值是可选的。
</p>
<p>此设置不能与 <code class="literal">ssl.secure_key_passphrase</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.secure_key_passphrase</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
<p>
用于解密私钥的密码。
由于密钥可能没有加密，因此该值是可选的。
</p>
<p>此设置不能与 <code class="literal">ssl.key_passphrase</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.certificate</code>
</span>
</dt>
<dd>
<p>指定与密钥相关的 PEM 编码证书(或证书链)的路径。</p>
<p>只有当设置了 <code class="literal">ssl.key</code> 时才能使用此设置。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.certificate_authorities</code>
</span>
</dt>
<dd>
<p>
要信任的PEM编码证书的路径列表。
</p>
<p>此设置不能与 <code class="literal">ssl.truststore.path</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.path</code>
</span>
</dt>
<dd>
<p>
包含私钥和证书的密钥库文件的路径。
</p>
<p>
它必须是一个 Java密钥库(jks) 或 PKCS#12 文件。
此设置不能与 <code class="literal">ssl.key</code> 同时使用。
</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.type</code>
</span>
</dt>
<dd>
密钥库文件的格式，必须是 <code class="literal">jks</code> 或 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.password</code>
</span>
</dt>
<dd>
<p>
密钥库的密码。
</p>
<p>此设置不能与 <code class="literal">ssl.keystore.secure_password</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">Secure</a>)
</span>
</dt>
<dd>
<p>
密钥库的密码。
</p>
<p>此设置不能与 <code class="literal">ssl.keystore.password</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.key_password</code>
</span>
</dt>
<dd>
<p>
密钥库中密钥的密码。默认值是密钥库的密码。
</p>
<p>此设置不能与 <code class="literal">ssl.keystore.secure_key_password</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.secure_key_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">Secure</a>)
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库的密码。
</dd>
</dl>
</div>
<p>此设置不能与 <code class="literal">ssl.keystore.key_password</code> 同时使用。</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">ssl.truststore.path</code>
</span>
</dt>
<dd>
<p>
包含要信任的证书的密钥库的路径。
它必须是 Java密钥库(jks) 或 PKCS#12 文件。
</p>
<p>此设置不能与 <code class="literal">ssl.certificate_authorities</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.type</code>
</span>
</dt>
<dd>
信任库文件的格式，必须是 <code class="literal">jks</code> 或 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.password</code>
</span>
</dt>
<dd>
<p>
信任库的密码。
</p>
<p>此设置不能与 <code class="literal">ssl.truststore.secure_password</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">Secure</a>)
</span>
</dt>
<dd>
<p>
信任库的密码。
</p>
<p>此设置不能和 <code class="literal">ssl.truststore.password</code> 一起使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.verification_mode</code>
</span>
</dt>
<dd>
<p>
控制证书的验证。
可用的值有：
</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<code class="literal">full</code>，用于验证所提供的证书是否由可信机构(CA)签名，还验证服务器的主机名(或IP地址)是否与证书中标识的名称匹配。
</li>
<li class="listitem">
<code class="literal">certificate</code>，用于验证所提供的证书是否由可信机构(CA)签名，但不执行任何主机名验证。
</li>
<li class="listitem">
<p>
<code class="literal">none</code>，<em>不验证</em>服务器的证书。
这种模式禁用了 SSL/TLS 的许多安全优势，应该在非常谨慎的考虑之后才使用。
它主要用作尝试解决 TLS 错误时的临时诊断机制；强烈建议不要在生产集群上使用它。
</p>
<p>默认值为 <code class="literal">full</code> </p>
</li>
</ul>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.supported_protocols</code>
</span>
</dt>
<dd>
<p>
支持的协议版本。可用的协议包括：<code class="literal">SSLv2Hello</code>，<code class="literal">SSLv3</code>，<code class="literal">TLSv1</code>，<code class="literal">TLSv1.1</code>，<code class="literal">TLSv1.2</code>，<code class="literal">TLSv1.3</code>。
如果 JVM 的 SSL 提供程序支持 TLSv1.3，则默认值为 <code class="literal">TLSv1.3,TLSv1.2,TLSv1.1</code>；否则，默认值为 <code class="literal">TLSv1.2,TLSv1.1</code>
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>如果 <code class="literal">xpack.security.fips_mode.enabled</code> 为 <code class="literal">true</code>，则不能使用 <code class="literal">SSLv2Hello</code> 或 <code class="literal">SSLv3</code>。参考 <a class="xref" href="fips-140-compliance.html" title="FIPS 140-2">FIPS 140-2</a>。</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.cipher_suites</code>
</span>
</dt>
<dd>
<p>
支持的密码套件因使用的 Java 版本而异。例如，对于版本11，默认值为 <code class="literal">TLS_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA256</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA</code>.
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
上面列出的默认密码套件包括 TLSv1.3 密码和需要 <em title="Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files">Java 加密扩展(JCE)无限强度权限策略文件</em>进行256位 AES 加密的密码。
如果 TLSv1.3 不可用，则 TLSv1.3 密码 <code class="literal">TLS_AES_256_GCM_SHA384</code> 和 <code class="literal">TLS_AES_128_GCM_SHA256</code> 不会包括在默认列表中。
如果 256-bit AES 不可用，则名字中有<code class="literal">AES_256</code>的密码不会包含在默认列表中。
最后，AES GCM 在 Java 11 之前的版本中存在已知的性能问题，只有在使用 Java 11 或更高版本时才会包含在默认列表中。
</p>
</div>
</div>
<p>有关更多信息，请参见Oracle的 <a href="https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html#GUID-7093246A-31A3-4304-AC5F-5FB6400405E2" class="ulink" target="_top">Java加密体系结构文档</a> 。</p>
</dd>
</dl>
</div>
<h5>
<a id="ref-kerberos-settings"></a>Kerberos 领域设置
</h5>
<p>对于一个 Kerberos 领域，<code class="literal">type</code> 必须设置为 <code class="literal">kerberos</code>。
除了<a class="xref" href="security-settings.html#ref-realm-settings" title="Settings valid for all realms">对所有领域都有效的设置</a>之外，你还可以指定以下可选设置:
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">keytab.path</code>
</span>
</dt>
<dd>
指定 Kerberos 密钥表文件的路径，该文件包含此 Elasticsearch 节点使用的服务主体。
它必须是 Elasticsearch 配置目录中的一个位置，并且该文件必须具有读取权限。
必需的。
</dd>
<dt>
<span class="term">
<code class="literal">remove_realm_name</code>
</span>
</dt>
<dd>
设置为<code class="literal">true</code>可删除主体名称中的领域部分。
Kerberos 中的 主体名称 的格式为 <code class="literal">user/instance@REALM</code>。
如果设置为 <code class="literal">true</code>，则用户名中不会包含领域部分(<code class="literal">@REALM</code>)。
默认为 <code class="literal">false</code>
</dd>
<dt>
<span class="term">
<code class="literal">krb.debug</code>
</span>
</dt>
<dd>
设置为<code class="literal">true</code>以启用为 Kerberos 身份验证提供支持的 Java 登录模块的调试日志。默认为 <code class="literal">false</code>
</dd>
<dt>
<span class="term">
<code class="literal">cache.ttl</code>
</span>
</dt>
<dd>
缓存的用户的生存时间。
在这段时间内，用户将被缓存。
用 Elasticsearch 标准的<a class="xref" href="common-options.html#time-units" title="Time units">time units (时间单位)</a>指定时间段。
默认为 <code class="literal">20m</code> 即 20 分钟。
</dd>
<dt>
<span class="term">
<code class="literal">cache.max_users</code>
</span>
</dt>
<dd>
在任何给定时间内，可以存在于缓存中的最大用户数量。默认为 100,000。
</dd>
<dt>
<span class="term">
<code class="literal">authorization_realms</code>
</span>
</dt>
<dd>
委托授权时应咨询的领域的名称。
如果使用此设置，则 Kerberos 领域不执行角色映射，而是从列出的领域加载用户。
参考 <a class="xref" href="realm-chains.html#authorization_realms" title="Delegating authorization to another realm">将授权委托给另一个领域</a>。
</dd>
</dl>
</div>
<h5>
<a id="ref-oidc-settings"></a>OpenID Connect 领域设置
</h5>
<p>
除了<a class="xref" href="security-settings.html#ref-realm-settings" title="Settings valid for all realms">对所有领域都有效的设置</a>之外，你还可以指定以下可选设置:
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">op.issuer</code>
</span>
</dt>
<dd>
OpenID连接提供程序<span class="remark">(OpenID Connect Provider)</span> 的可验证标识。 
发行者标识<span class="remark">(Issuer Identifier)</span> 通常是一个使用https方案的大小写敏感的URL，它包含方案、主机、可选的端口号 及 路径组件，不包含查询或分段<span class="remark">(fragment)</span>组件。
此设置的值应由你的 OpenID连接提供程序 提供。
</dd>
<dt>
<span class="term">
<code class="literal">op.authorization_endpoint</code>
</span>
</dt>
<dd>
OpenID连接提供程序 中 授权 终端的URL。
此设置的值应由你的 OpenID连接提供程序 提供。
</dd>
<dt>
<span class="term">
<code class="literal">op.token_endpoint</code>
</span>
</dt>
<dd>
OpenID连接提供程序 中 令牌 终端的URL。
此设置的值应由你的 OpenID连接提供程序 提供。
</dd>
<dt>
<span class="term">
<code class="literal">op.userinfo_endpoint</code>
</span>
</dt>
<dd>
OpenID连接提供程序 中 用户信息 终端的URL。
此设置的值应由你的 OpenID连接提供程序 提供。
</dd>
<dt>
<span class="term">
<code class="literal">op.endsession_endpoint</code>
</span>
</dt>
<dd>
OpenID连接提供程序 中的 结束会话 终端的URL。
此设置的值应由你的 OpenID连接提供程序 提供。
</dd>
<dt>
<span class="term">
<code class="literal">op.jwkset_path</code>
</span>
</dt>
<dd>
JSON Web Key Set 的路径或URL, OpenID连接提供程序用于签名令牌和声明响应的密钥材料。
如果提供的是路径，则相对于 Elasticsearch 配置目录进行解析。
如果提供的是URL，则它必须是一个 <code class="literal">file</code> URL 或 <code class="literal">https</code> URL。
Elasticsearch会自动缓存检索到的JWK集，以避免不必要的HTTP请求，但会在签名验证失败时尝试刷新JWK，因为这可能表明OpenID连接提供程序已经轮换了签名密钥。
</dd>
</dl>
</div>
<p>
基于文件的资源的轮询频率由 Elasticsearch 全局设置 <code class="literal">resource.reload.interval.high</code> 决定，默认为5秒。
</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">rp.client_id</code>
</span>
</dt>
<dd>
在 OpenID连接提供程序 处注册时分配给 Elasticsearch 的 OAuth 2.0 客户端标识。
</dd>
<dt>
<span class="term">
<code class="literal">rp.client_secret</code>(<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
在 OpenID连接提供程序 处注册时分配给 Elasticsearch 的 OAuth 2.0 客户端密钥。
</dd>
<dt>
<span class="term">
<code class="literal">rp.redirect_uri</code>
</span>
</dt>
<dd>
Kibana 内的重定向<span class="remark">(Redirect)</span> URI。
如果想要使用 授权代码流程<span class="remark">(authorization code flow)</span> ，就是你的Kibana服务器的“api/security/oidc/callback”终端。

如果要使用隐式流程<span class="remark">(implicit flow)</span> ，就是 "api/security/oidc/implicit" 终端。

比如 <code class="literal">https://kibana.example.com/api/security/oidc/callback</code>。
</dd>
<dt>
<span class="term">
<code class="literal">rp.response_type</code>
</span>
</dt>
<dd>
OAuth 2.0 响应类型，它决定了要使用的授权处理流程。
可以是用于授权码授权流程的<code class="literal">code</code>，或者 <code class="literal">id_token</code>、<code class="literal">id_token token</code>中的一个，用于隐式流程。
</dd>
<dt>
<span class="term">
<code class="literal">rp.signature_algorithm</code>
</span>
</dt>
<dd> 
签名算法，Elasticsearch 用于验证它将从 OpenID连接提供程序 接收的id令牌的签名。默认为 <code class="literal">RSA256</code>
</dd>
<dt>
<span class="term">
<code class="literal">rp.requested_scopes</code>
</span>
</dt>
<dd>
作为身份验证请求的一部分，OpenID连接提供程序 会请求 范围(scope) 的值。可选，默认为 <code class="literal">openid</code>
</dd>
<dt>
<span class="term">
<code class="literal">rp.post_logout_redirect_uri</code>
</span>
</dt>
<dd>
重定向URI(通常在Kibana内)，在一次成功的注销后，OpenID连接提供程序应该将浏览器重定向到这个URI。  
</dd>
<dt>
<span class="term">
<code class="literal">claims.principal</code>
</span>
</dt>
<dd>
包含用户主体(用户名)的 OpenID连接 声明的名称。
</dd>
<dt>
<span class="term">
<code class="literal">claims.groups</code>
</span>
</dt>
<dd>
包含用户组的 OpenID连接 声明的名称。
</dd>
<dt>
<span class="term">
<code class="literal">claims.name</code>
</span>
</dt>
<dd>
包含用户全名的OpenID连接声明的名称。
</dd>
<dt>
<span class="term">
<code class="literal">claims.mail</code>
</span>
</dt>
<dd>
包含用户email地址的OpenID连接声明的名称。
</dd>
<dt>
<span class="term">
<code class="literal">claims.dn</code>
</span>
</dt>
<dd>
包含用户的 X.509 <em>识别名称</em><span class="remark">(dn, Distinguished Name)</span> 的OpenID连接声明的名称。
</dd>
<dt>
<span class="term">
<code class="literal">claim_patterns.principal</code>
</span>
</dt>
<dd>
在应用于用户的 <em>主体</em></em><span class="remark">(principal)</span> 属性之前，与<code class="literal">claims.principal</code>指定的OpenID连接声明相匹配的 Java 正则表达式。
属性值必须与模式匹配，第一个 <em>捕获组</em><span class="remark">(capturing group)</span> 的值用作主体。  
比如，<code class="literal">^([^@]+)@example\\.com$</code> 匹配来自 "example.com" 域的email地址，并将 <a href="https://www.jochentopf.com/email/chars.html" rel="nofollow">local-part</a><span class="remark">(就是@前面的部分内容)</span>作为主体。
</dd>
<dt>
<span class="term">
<code class="literal">claim_patterns.groups</code>
</span>
</dt>
<dd>
每个 <code class="literal">claim_patterns.principal</code>，但 <em>group</em> 属性除外。
</dd>
<dt>
<span class="term">
<code class="literal">claim_patterns.name</code>
</span>
</dt>
<dd>
每个 <code class="literal">claim_patterns.principal</code>，但 <em>name</em> 属性除外。
</dd>
<dt>
<span class="term">
<code class="literal">claim_patterns.mail</code>
</span>
</dt>
<dd>
每个 <code class="literal">claim_patterns.principal</code>，但 <em>mail</em> 属性除外。
</dd>
<dt>
<span class="term">
<code class="literal">claim_patterns.dn</code>
</span>
</dt>
<dd>
每个 <code class="literal">claim_patterns.principal</code>，但 <em>dn</em> 属性除外。
</dd>
<dt>
<span class="term">
<code class="literal">allowed_clock_skew</code>
</span>
</dt>
<dd>
验证id令牌的创建和过期时间时，要考虑的最大允许时钟偏差。
</dd>
<dt>
<span class="term">
<code class="literal">populate_user_metadata</code>
</span>
</dt>
<dd>
是否用OpenID连接声明提供的值填充 Elasticsearch 用户的元数据。默认为 <code class="literal">true</code>
</dd>
<dt>
<span class="term">
<code class="literal">http.connect_timeout</code>
</span>
</dt>
<dd>
控制用于与OpenID连接提供程序终端进行 反向通道<span class="remark">(back-channel)</span> 通信的 http 客户端的行为。
指定连接建立之前的超时时间。
零值意味着不使用超时。
默认为 <code class="literal">5s</code>
</dd>
<dt>
<span class="term">
<code class="literal">http.connection_read_timeout</code>
</span>
</dt>
<dd>
控制用于与OpenID连接提供程序终端进行 反向通道<span class="remark">(back-channel)</span> 通信的 http 客户端的行为。

从连接管理器请求连接时使用的超时时间。
默认为 <code class="literal">5s</code>
</dd>
<dt>
<span class="term">
<code class="literal">http.socket_timeout</code>
</span>
</dt>
<dd>
控制用于与OpenID连接提供程序终端进行 反向通道<span class="remark">(back-channel)</span> 通信的 http 客户端的行为。

socket超时时间(SO_TIMEOUT)，单位为毫秒，这是等待数据的超时时间，或者换句话说，两个连续数据包之间的最大不活动周期。  
默认为 <code class="literal">5s</code>
</dd>
<dt>
<span class="term">
<code class="literal">http.max_connections</code>
</span>
</dt>
<dd>
控制用于与OpenID连接提供程序终端进行 反向通道<span class="remark">(back-channel)</span> 通信的 http 客户端的行为。

所有终端允许的最大连接数。
</dd>
<dt>
<span class="term">
<code class="literal">http.max_endpoint_connections</code>
</span>
</dt>
<dd>
控制用于与OpenID连接提供程序终端进行 反向通道<span class="remark">(back-channel)</span> 通信的 http 客户端的行为。

每个终端允许的最大连接数。
</dd>
</dl>
</div>
<h5>
<a id="ref-oidc-ssl-settings"></a>OpenID Connect 领域 SSL 设置
</h5>
<p>以下设置可用于为到OpenID连接提供程序终端的所有传出http连接配置SSL。</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
这些设置<em>仅</em>用于 Elasticsearch 和OpenID连接提供程序之间的 反向通道<span class="remark">(back-channel)</span> 通信
</p>
</div>
</div>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">ssl.key</code>
</span>
</dt>
<dd>
<p>
包含私钥的 PEM 编码文件的路径。
</p>
<p>
如果需要 HTTP 客户端身份验证，则将使用该文件。
这个设置不能与 <code class="literal">ssl.keystore.path</code> 同时使用。
</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.key_passphrase</code>
</span>
</dt>
<dd>
<p>
用于解密私钥的密码。
由于密钥可能没有加密，因此该值是可选的。
</p>
<p>此设置不能与 <code class="literal">ssl.secure_key_passphrase</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.secure_key_passphrase</code> (<a class="xref" href="secure-settings.html" title="Secure settings">Secure</a>)
</span>
</dt>
<dd>
<p>
用于解密私钥的密码。
由于密钥可能没有加密，因此该值是可选的。
</p>
<p>此设置不能与 <code class="literal">ssl.key_passphrase</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.certificate</code>
</span>
</dt>
<dd>
<p>指定与密钥相关的 PEM 编码证书(或证书链)的路径。</p>
<p>只有当设置了 <code class="literal">ssl.key</code> 时才能使用此设置。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.certificate_authorities</code>
</span>
</dt>
<dd>
<p>
要信任的PEM编码证书的路径列表。
</p>
<p>此设置不能与 <code class="literal">ssl.truststore.path</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.path</code>
</span>
</dt>
<dd>
<p>
包含私钥和证书的密钥库文件的路径。
</p>
<p>
它必须是一个 Java密钥库(jks) 或 PKCS#12 文件。
此设置不能与 <code class="literal">ssl.key</code> 同时使用。
</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.type</code>
</span>
</dt>
<dd>
密钥库文件的格式，必须是 <code class="literal">jks</code> 或 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.password</code>
</span>
</dt>
<dd>
<p>
密钥库的密码。
</p>
<p>此设置不能与 <code class="literal">ssl.keystore.secure_password</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
<p>
密钥库的密码。
</p>
<p>此设置不能与 <code class="literal">ssl.keystore.password</code> 同时使用</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.key_password</code>
</span>
</dt>
<dd>
<p>
密钥库中密钥的密码。默认值是密钥库的密码。
</p>
<p>此设置不能与 <code class="literal">ssl.keystore.secure_key_password</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.keystore.secure_key_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">Secure</a>)
</span>
</dt>
<dd>
<p>
密钥库中密钥的密码。默认值是密钥库的密码。
</p>
<p>此设置不能与 <code class="literal">ssl.keystore.key_password</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.path</code>
</span>
</dt>
<dd>
<p>
包含要信任的证书的密钥库的路径。
它必须是 Java密钥库(jks) 或 PKCS#12 文件。
</p>
<p>此设置不能与 <code class="literal">ssl.certificate_authorities</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.type</code>
</span>
</dt>
<dd>
密钥库文件的格式，必须是 <code class="literal">jks</code> 或 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.password</code>
</span>
</dt>
<dd>
<p>
信任库的密码。
</p>
<p>该设置不能与 <code class="literal">ssl.truststore.secure_password</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.truststore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">Secure</a>)
</span>
</dt>
<dd>
<p>
信任库的密码。
</p>
<p>该设置不能与 <code class="literal">ssl.truststore.password</code> 同时使用。</p>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.verification_mode</code>
</span>
</dt>
<dd>
<p>
控制证书的验证。
可用的值有：
</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<code class="literal">full</code>，用于验证所提供的证书是否由可信机构(CA)签名，还验证服务器的主机名(或IP地址)是否与证书中标识的名称匹配。
</li>
<li class="listitem">
<code class="literal">certificate</code>，用于验证所提供的证书是否由可信机构(CA)签名，但不执行任何主机名验证。
</li>
<li class="listitem">
<p>
<code class="literal">none</code>，<em>不验证</em>服务器的证书。
这种模式禁用了 SSL/TLS 的许多安全优势，应该在非常谨慎的考虑之后才使用。
它主要用作尝试解决 TLS 错误时的临时诊断机制；强烈建议不要在生产集群上使用它。
</p>
<p>默认值为 <code class="literal">full</code> </p>
</li>
</ul>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.supported_protocols</code>
</span>
</dt>
<dd>
<p>
支持的协议版本。可用的协议包括：<code class="literal">SSLv2Hello</code>，<code class="literal">SSLv3</code>，<code class="literal">TLSv1</code>，<code class="literal">TLSv1.1</code>，<code class="literal">TLSv1.2</code>，<code class="literal">TLSv1.3</code>。
如果 JVM 的 SSL 提供程序支持 TLSv1.3，则默认值为 <code class="literal">TLSv1.3,TLSv1.2,TLSv1.1</code>；否则，默认值为 <code class="literal">TLSv1.2,TLSv1.1</code>
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>如果 <code class="literal">xpack.security.fips_mode.enabled</code> 为 <code class="literal">true</code>，则不能使用 <code class="literal">SSLv2Hello</code> 或 <code class="literal">SSLv3</code>。参考 <a class="xref" href="fips-140-compliance.html" title="FIPS 140-2">FIPS 140-2</a>。</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">ssl.cipher_suites</code>
</span>
</dt>
<dd>
<p>
支持的密码套件因使用的 Java 版本而异。例如，对于版本11，默认值为 <code class="literal">TLS_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA256</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA</code>.
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
上面列出的默认密码套件包括 TLSv1.3 密码和需要 <em title="Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files">Java 加密扩展(JCE)无限强度权限策略文件</em>进行256位 AES 加密的密码。
如果 TLSv1.3 不可用，则 TLSv1.3 密码 <code class="literal">TLS_AES_256_GCM_SHA384</code> 和 <code class="literal">TLS_AES_128_GCM_SHA256</code> 不会包括在默认列表中。
如果 256-bit AES 不可用，则名字中有<code class="literal">AES_256</code>的密码不会包含在默认列表中。
最后，AES GCM 在 Java 11 之前的版本中存在已知的性能问题，只有在使用 Java 11 或更高版本时才会包含在默认列表中。
</p>
</div>
</div>
<p>有关更多信息，请参见Oracle的 <a href="https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html#GUID-7093246A-31A3-4304-AC5F-5FB6400405E2" class="ulink" target="_top">Java加密体系结构文档</a> 。</p>
</dd>
</dl>
</div>
<h5>
<a id="load-balancing"></a>负载均衡和失效 (load balancing and failover)
</h5>
<p><code class="literal">load_balance.type</code> 设置可以有下面这些值：</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<code class="literal">failover</code>：指定的 URL 按照指定的顺序使用。
可以连接到的第一台服务器将用于所有后续连接。
如果与该服务器的连接失败，则可以建立连接的下一个服务器将用于后续连接。
</li>
<li class="listitem">
<code class="literal">dns_failover</code>：在这种操作模式下，只能指定一个 URL。
此 URL 必须包含一个 DNS 名称。
将向系统查询与此 DNS 名称对应的所有IP地址。
与A ctive Directory 或 LDAP 服务器的连接将始终按照检索的顺序进行尝试。
将始终按照检索到 Active Directory 或 LDAP 服务器的顺序尝试连接。 

这与<code class="literal">failover</code>的不同之处在于，列表没有重新排序，并且 如果服务器在列表开始时出现故障，它仍会尝试进行后续连接。
</li>
<li class="listitem">
<code class="literal">round_robin</code>: 连接将不断遍历提供的 URL 列表。
如果某一台服务器不可用，将继续遍历 URL 列表，直到成功连接。
</li>
<li class="listitem">
<code class="literal">dns_round_robin</code>: 在这种操作模式下，只能指定一个URL。
此 URL 必须包含一个 DNS 名称。
将向系统查询与此 DNS 名称对应的所有IP地址。
连接将不断遍历地址列表。
如果某一台服务器不可用，将继续遍历 URL 列表，直到成功连接。
</li>
</ul>
</div>
<h4>
<a id="ssl-tls-settings"></a>常规TLS设置
</h4>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.ssl.diagnose.trust</code>
</span>
</dt>
<dd>
是否输出 SSL/TLS 信任失败的诊断消息。
如果设置为<code class="literal">true</code>（默认值），则每当 SSL 连接（传入或传出）由于无法建立信任而被拒绝时，就会在 Elasticsearch 日志中打印一条消息。
此诊断信息包含可用于确定故障原因并帮助解决问题的信息。
设置为 <code class="literal">false</code> 以禁用此消息。
注意：当 <code class="literal">xpack.security.fips_mode.enabled</code> 设置为 <code class="literal">true</code> 时，其默认值为 <code class="literal">false</code> ！
</dd>
</dl>
</div>
<h5>
<a id="tls-ssl-key-settings"></a>TLS/SSL密钥和可信证书设置
</h5>
<p>
以下设置用于指定通过SSL/TLS连接进行通信时应使用的私钥、证书和可信证书。
如果未配置可信证书，JVM信任的默认证书将与同一上下文中与密钥关联的证书一起受信任。
对于需要客户端身份验证的连接，或者充当启用SSL的服务器时，必须准备好密钥和证书。
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<a id="pkcs12-truststore-note"></a>
<p>
在 PKCS#12 文件中存储可信证书，虽然受支持，但在实际使用中并不常见。

<a class="xref" href="certutil.html" title="elasticsearch-certutil"><code class="literal">elasticsearch-certutil</code> 工具</a> 以及 Java的<code class="literal">keytool</code>被设计用于生成 PKCS#12 文件，这些文件既可用作密钥库，也可用作信任库，但对于使用其他工具创建的容器文件，情况可能并非如此。

通常，PKCS#12 文件只包含机密和私有的信息。

要确认 PKCS#12 容器中包含可信证书("anchor")信息，请在 <code class="literal">openssl pkcs12 -info</code> 输出中查找  <code class="literal">2.16.840.1.113894.746875.1.1: &lt;Unsupported tag 6&gt;</code> ，或在 <code class="literal">keytool -list</code> 输出中查找 <code class="literal">trustedCertEntry</code>
</p>
</div>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="http-tls-ssl-settings"></a>HTTP TLS/SSL 设置
</h3>
</div></div></div>
<p>可以配置以下TLS/SSL设置。</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.enabled</code>
</span>
</dt>
<dd>
用于启用或禁用 TLS/SSL。默认值为 <code class="literal">false</code>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.supported_protocols</code>
</span>
</dt>
<dd>
<p>
支持的协议版本。可用的协议包括：<code class="literal">SSLv2Hello</code>，<code class="literal">SSLv3</code>，<code class="literal">TLSv1</code>，<code class="literal">TLSv1.1</code>，<code class="literal">TLSv1.2</code>，<code class="literal">TLSv1.3</code>。
如果 JVM 的 SSL 提供程序支持 TLSv1.3，则默认值为 <code class="literal">TLSv1.3,TLSv1.2,TLSv1.1</code>；否则，默认值为 <code class="literal">TLSv1.2,TLSv1.1</code>
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>如果 <code class="literal">xpack.security.fips_mode.enabled</code> 为 <code class="literal">true</code>，则不能使用 <code class="literal">SSLv2Hello</code> 或 <code class="literal">SSLv3</code>。参考 <a class="xref" href="fips-140-compliance.html" title="FIPS 140-2">FIPS 140-2</a>。</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.client_authentication</code>
</span>
</dt>
<dd>
控制服务器从客户端连接请求证书时的行为。
有效值为 <code class="literal">required</code>、<code class="literal">optional</code> 及 <code class="literal">none</code>。
<code class="literal">required</code>强制客户端提供证书，而 <code class="literal">optional</code> 会向客户端请求证书，但不要求客户端提供证书。
默认值为 <code class="literal">none</code>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.cipher_suites</code>
</span>
</dt>
<dd>
<p>
支持的密码套件因使用的 Java 版本而异。
例如，对于版本11，默认值为  <code class="literal">TLS_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA256</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA</code>.
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
上面列出的默认密码套件包括 TLSv1.3 密码和需要 <em title="Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files">Java 加密扩展(JCE)无限强度权限策略文件</em>进行256位 AES 加密的密码。
如果 TLSv1.3 不可用，则 TLSv1.3 密码 <code class="literal">TLS_AES_256_GCM_SHA384</code> 和 <code class="literal">TLS_AES_128_GCM_SHA256</code> 不会包括在默认列表中。
如果 256-bit AES 不可用，则名字中有<code class="literal">AES_256</code>的密码不会包含在默认列表中。
最后，AES GCM 在 Java 11 之前的版本中存在已知的性能问题，只有在使用 Java 11 或更高版本时才会包含在默认列表中。
</p>
</div>
</div>
<p>有关更多信息，请参见Oracle的 <a href="https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html#GUID-7093246A-31A3-4304-AC5F-5FB6400405E2" class="ulink" target="_top">Java加密体系结构文档</a> 。</p>
</dd>
</dl>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="security-http-tls-ssl-key-trusted-certificate-settings"></a>HTTP TLS/SSL 密钥和可信证书设置
</h4>
</div></div></div>
<p>
以下设置用于指定通过SSL/TLS连接进行通信时应使用的私钥、证书和可信证书。
必须配置私钥和证书。
</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="_pem_encoded_files_2"></a>PEM 编码文件
</h4>
</div></div></div>
<p>使用 PEM 编码文件时，请使用以下设置：</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.key</code>
</span>
</dt>
<dd>
包含私钥的 PEM 编码文件的路径。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.key_passphrase</code>
</span>
</dt>
<dd>
用于解密私钥的密码。由于密钥可能没有加密，因此该值是可选的。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.secure_key_passphrase</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
用于解密私钥的密码。由于密钥可能没有加密，因此该值是可选的。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.certificate</code>
</span>
</dt>
<dd>
指定与密钥相关的 PEM 编码证书(或证书链)的路径。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.certificate_authorities</code>
</span>
</dt>
<dd>
应该受信任的 PEM 编码证书文件的路径列表。  
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="_java_keystore_files_2"></a>Java 密钥库文件
</h4>
</div></div></div>
<p>使用包含私钥、证书和应该信任的证书的 Java 密钥库文件(JKS, Java keystore file)时，请使用以下设置：</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.path</code>
</span>
</dt>
<dd>
包含私钥和证书的密钥库文件的路径。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.password</code>
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.key_password</code>
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是 密钥库密码<span class="remark">(keystore password)</span>。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.secure_key_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是 密钥库密码<span class="remark">(keystore password)</span>。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.truststore.path</code>
</span>
</dt>
<dd>
包含要信任的证书的密钥库的路径。
它必须是 Java 密钥库(jks) 或 PKCS#12 文件。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.truststore.password</code>
</span>
</dt>
<dd>
信任库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.truststore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
信任库的密码。
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="security-http-pkcs12-files"></a>PKCS#12 文件
</h4>
</div></div></div>
<p>
Elasticsearch可以配置为使用 PKCS#12 容器文件(<code class="literal">.p12</code> 或 <code class="literal">.pfx</code>文件)，它包含私钥、证书和应该被信任的证书。
</p>
<p>PKCS#12 文件的配置方式与 Java 密钥库文件相同：</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.path</code>
</span>
</dt>
<dd>
包含私钥和证书的密钥库文件的路径。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.type</code>
</span>
</dt>
<dd>
密钥库文件的格式，必须是 <code class="literal">jks</code> 或 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.password</code>
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.key_password</code>
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.keystore.secure_key_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.truststore.path</code>
</span>
</dt>
<dd>
包含要信任的证书的密钥库的路径。它必须是Java密钥库(jks) 或 PKCS#12 文件。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.truststore.type</code>
</span>
</dt>
<dd>
将此项设置为 <code class="literal">PKCS12</code> ，以表明信任库是 PKCS#12 文件。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.truststore.password</code>
</span>
</dt>
<dd>
信任库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.ssl.truststore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
信任库的密码。
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="security-http-pkcs11-tokens"></a>PKCS#11 令牌
</h4>
</div></div></div>
<p>Elasticsearch 可以被配置为使用 PKCS#11 令牌，该令牌包含私钥、证书和应该被信任的证书。</p>
<p>PKCS#11 令牌需要在JVM级别进行额外配置，可以通过以下设置启用：</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.http.keystore.type</code>
</span>
</dt>
<dd>
将此项设置为 <code class="literal">PKCS11</code> ，以表明 PKCS#11 令牌应该被用作密钥库。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.truststore.type</code>
</span>
</dt>
<dd>
信任库文件的格式。
对于Java秘钥库格式，使用 <code class="literal">jks</code>。
对于 PKCS#12 文件，使用 <code class="literal">PKCS12</code>。
对于 PKCS#11 令牌, 使用 <code class="literal">PKCS11</code>。
默认值为 <code class="literal">jks</code>
</dd>
</dl>
</div>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
在配置 PKCS#11 令牌（即 JVM 被配置为用作 Elasticsearch 的密钥库或信任库）时，可以通过在所配置的上下文中将适当的值设置为<code class="literal">ssl.truststore.password</code> 或 <code class="literal">ssl.truststore.secure_password</code>来配置令牌的PIN。
由于只能配置一个 PKCS#11 令牌，因此在 Elasticsearch 中只能配置一个密钥库和信任库。
这反过来意味着只有一个证书可用于传输层和http层的TLS。
</p>
</div>
</div>
</div>

</div>

<div class="section">
<div class="titlepage"><div><div>
<h3 class="title">
<a id="transport-tls-ssl-settings"></a>传输层 TLS/SSL 设置
</h3>
</div></div></div>
<p>你可以配置以下TLS/SSL设置。</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.enabled</code>
</span>
</dt>
<dd>
用于启用或禁用 TLS/SSL。默认值为 <code class="literal">false</code>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.supported_protocols</code>
</span>
</dt>
<dd>
<p>
支持的协议版本。可用的协议包括：<code class="literal">SSLv2Hello</code>，<code class="literal">SSLv3</code>，<code class="literal">TLSv1</code>，<code class="literal">TLSv1.1</code>，<code class="literal">TLSv1.2</code>，<code class="literal">TLSv1.3</code>。
如果 JVM 的 SSL 提供程序支持 TLSv1.3，则默认值为 <code class="literal">TLSv1.3,TLSv1.2,TLSv1.1</code>；否则，默认值为 <code class="literal">TLSv1.2,TLSv1.1</code>
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>如果 <code class="literal">xpack.security.fips_mode.enabled</code> 为 <code class="literal">true</code>，则不能使用 <code class="literal">SSLv2Hello</code> 或 <code class="literal">SSLv3</code>。参考 <a class="xref" href="fips-140-compliance.html" title="FIPS 140-2">FIPS 140-2</a>。</p>
</div>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.client_authentication</code>
</span>
</dt>
<dd>
控制服务器从客户端连接请求证书时的行为。
有效值为 <code class="literal">required</code>、<code class="literal">optional</code> 及 <code class="literal">none</code>。
<code class="literal">required</code>强制客户端提供证书，而 <code class="literal">optional</code> 会向客户端请求证书，但不要求客户端提供证书。
默认值为 <code class="literal">none</code>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.verification_mode</code>
</span>
</dt>
<dd>
<p>
控制证书的验证。
可用的值有：
</p>
<div class="ulist itemizedlist">
<ul class="itemizedlist">
<li class="listitem">
<code class="literal">full</code>，用于验证所提供的证书是否由可信机构(CA)签名，还验证服务器的主机名(或IP地址)是否与证书中标识的名称匹配。
</li>
<li class="listitem">
<code class="literal">certificate</code>，用于验证所提供的证书是否由可信机构(CA)签名，但不执行任何主机名验证。
</li>
<li class="listitem">
<p>
<code class="literal">none</code>，<em>不验证</em>服务器的证书。
这种模式禁用了 SSL/TLS 的许多安全优势，应该在非常谨慎的考虑之后才使用。
它主要用作尝试解决 TLS 错误时的临时诊断机制；强烈建议不要在生产集群上使用它。
</p>
<p>默认值为 <code class="literal">full</code> </p>
</li>
</ul>
</div>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.cipher_suites</code>
</span>
</dt>
<dd>
<p>
支持的密码套件因使用的 Java 版本而异。例如，对于版本11，默认值为 <code class="literal">TLS_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA</code>, <code class="literal">TLS_RSA_WITH_AES_256_GCM_SHA384</code>,
<code class="literal">TLS_RSA_WITH_AES_128_GCM_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA256</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA256</code>, <code class="literal">TLS_RSA_WITH_AES_256_CBC_SHA</code>,
<code class="literal">TLS_RSA_WITH_AES_128_CBC_SHA</code>.
</p>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
上面列出的默认密码套件包括 TLSv1.3 密码和需要 <em title="Java Cryptography Extension (JCE) Unlimited Strength Jurisdiction Policy Files">Java 加密扩展(JCE)无限强度权限策略文件</em>进行256位 AES 加密的密码。
如果 TLSv1.3 不可用，则 TLSv1.3 密码 <code class="literal">TLS_AES_256_GCM_SHA384</code> 和 <code class="literal">TLS_AES_128_GCM_SHA256</code> 不会包括在默认列表中。
如果 256-bit AES 不可用，则名字中有<code class="literal">AES_256</code>的密码不会包含在默认列表中。
最后，AES GCM 在 Java 11 之前的版本中存在已知的性能问题，只有在使用 Java 11 或更高版本时才会包含在默认列表中。
</p>
</div>
</div>
<p>有关更多信息，请参见Oracle的 <a href="https://docs.oracle.com/en/java/javase/11/security/oracle-providers.html#GUID-7093246A-31A3-4304-AC5F-5FB6400405E2" class="ulink" target="_top">Java加密体系结构文档</a> 。</p>
</dd>
</dl>
</div>
<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="security-transport-tls-ssl-key-trusted-certificate-settings"></a>传输时的 TLS/SSL 密钥和可信证书设置
</h4>
</div></div></div>
<p>
以下设置用于指定通过SSL/TLS连接进行通信时应使用的私钥、证书和可信证书。
必须配置私钥和证书。
</p>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="_pem_encoded_files_3"></a>PEM 编码文件
</h4>
</div></div></div>
<p>使用 PEM 编码文件时，请使用以下设置：</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.key</code>
</span>
</dt>
<dd>
包含私钥的 PEM 编码文件的路径。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.key_passphrase</code>
</span>
</dt>
<dd>
用于解密私钥的密码。由于密钥可能没有加密，因此该值是可选的。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.secure_key_passphrase</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
用于解密私钥的密码。由于密钥可能没有加密，因此该值是可选的。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.certificate</code>
</span>
</dt>
<dd>
指定与密钥相关的 PEM 编码证书(或证书链)的路径。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.certificate_authorities</code>
</span>
</dt>
<dd>
应该受信任的 PEM 编码证书文件的路径列表。
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="_java_keystore_files_3"></a>Java 密钥库文件
</h4>
</div></div></div>
<p>使用包含私钥、证书和应该信任的证书的 Java 密钥库文件(JKS, Java keystore file)时，请使用以下设置：</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.path</code>
</span>
</dt>
<dd>
包含私钥和证书的密钥库文件的路径。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.password</code>
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.key_password</code>
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.secure_key_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.truststore.path</code>
</span>
</dt>
<dd>
包含要信任的证书的密钥库的路径。它必须是Java密钥库(jks) 或 PKCS#12 文件。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.truststore.password</code>
</span>
</dt>
<dd>
信任库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.truststore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
信任库的密码。
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="security-transport-pkcs12-files"></a>PKCS#12 文件
</h4>
</div></div></div>
<p>
Elasticsearch可以配置为使用 PKCS#12 容器文件(<code class="literal">.p12</code> 或 <code class="literal">.pfx</code>文件)，它包含私钥、证书和应该被信任的证书。
</p>
<p>PKCS#12 文件的配置方式与 Java 密钥库文件相同：</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.path</code>
</span>
</dt>
<dd>
包含私钥和证书的密钥库文件的路径。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.type</code>
</span>
</dt>
<dd>
密钥库文件的格式，必须是 <code class="literal">jks</code> 或 <code class="literal">PKCS12</code>。
如果秘钥库路径以 ".p12"、".pfx" 或 ".pkcs12" 结尾，则其默认值为 <code class="literal">PKCS12</code>；否则，默认值为 <code class="literal">jks</code>
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.password</code>
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.key_password</code>
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.keystore.secure_key_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
密钥库中密钥的密码。默认值是密钥库密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.truststore.path</code>
</span>
</dt>
<dd>
包含要信任的证书的密钥库的路径。它必须是Java密钥库(jks) 或 PKCS#12 文件。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.truststore.type</code>
</span>
</dt>
<dd>
将此项设置为 <code class="literal">PKCS12</code> ，以表明信任库是 PKCS#12 文件。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.truststore.password</code>
</span>
</dt>
<dd>
信任库的密码。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.ssl.truststore.secure_password</code> (<a class="xref" href="secure-settings.html" title="Secure settings">安全</a>)
</span>
</dt>
<dd>
信任库的密码。
</dd>
</dl>
</div>
</div>

<div class="section">
<div class="titlepage"><div><div>
<h4 class="title">
<a id="security-transport-pkcs11-tokens"></a>PKCS#11 令牌
</h4>
</div></div></div>
<p>Elasticsearch 可以被配置为使用 PKCS#11 令牌，该令牌包含私钥、证书和应该被信任的证书。</p>
<p>PKCS#11 令牌需要在JVM级别进行额外配置，可以通过以下设置启用：</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.transport.keystore.type</code>
</span>
</dt>
<dd>
将此项设置为 <code class="literal">PKCS11</code>，以表明 PKCS#11 令牌应该被用作密钥库。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.truststore.type</code>
</span>
</dt>
<dd>
信任库文件的格式。
对于Java秘钥库格式，使用 <code class="literal">jks</code>。
对于 PKCS#12 文件，使用 <code class="literal">PKCS12</code>。
对于 PKCS#11 令牌, 使用 <code class="literal">PKCS11</code>。
默认值为 <code class="literal">jks</code>
</dd>
</dl>
</div>
<div class="note admon">
<div class="icon"></div>
<div class="admon_content">
<p>
在配置 PKCS#11 令牌（即 JVM 被配置为用作 Elasticsearch 的密钥库或信任库）时，可以通过在所配置的上下文中将适当的值设置为<code class="literal">ssl.truststore.password</code> 或 <code class="literal">ssl.truststore.secure_password</code>来配置令牌的PIN。
由于只能配置一个 PKCS#11 令牌，因此在 Elasticsearch 中只能配置一个密钥库和信任库。
这反过来意味着只有一个证书可用于传输层和http层的TLS。
</p>
</div>
</div>
<h5>
<a id="ssl-tls-profile-settings"></a>传输配置(transport profile)的 TLS/SSL 设置
</h5>
<span class="remark">(这里的 "transport profile" 可能翻译的不对, 但是我暂时还未找到更合适的翻译. By: aben)</span>
<p>
适用于<a class="xref" href="security-settings.html#transport-tls-ssl-settings" title="Transport TLS/SSL settings">默认传输机制(default transport)</a>的设置也适用于每个 <em>传输配置(transport profile)</em>。
默认情况下，除非指定，否则 <em>传输配置</em> 的设置将与 <em>默认传输机制</em> 相同。
</p>
<p>
举个例子，让我们看看密钥设置。
对于 <em>默认传输机制</em> 来说，这个属性叫 <code class="literal">xpack.security.transport.ssl.key</code>。
为了在一个 <em>传输配置</em> 中使用此设置，使用前缀 <code class="literal">transport.profiles.$PROFILE.xpack.security.</code> 并在 <code class="literal">xpack.security.transport.</code> 后追加设置部分。
对于密钥设置，是 <code class="literal">transport.profiles.$PROFILE.xpack.security.ssl.key</code>。
</p>
<h4>
<a id="ip-filtering-settings"></a>IP 过滤设置
</h4>
<p>可以为 <a class="xref" href="ip-filtering.html" title="Restricting connections with IP filtering">IP 过滤</a>配置下列设置。</p>
<div class="variablelist">
<dl class="variablelist">
<dt>
<span class="term">
<code class="literal">xpack.security.transport.filter.allow</code>
</span>
</dt>
<dd>
允许的IP地址列表。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.transport.filter.deny</code>
</span>
</dt>
<dd>
拒绝的IP地址列表。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.filter.allow</code>
</span>
</dt>
<dd>
只允许HTTP的IP地址列表。
</dd>
<dt>
<span class="term">
<code class="literal">xpack.security.http.filter.deny</code>
</span>
</dt>
<dd>
仅针对HTTP拒绝的IP地址列表。
</dd>
<dt>
<span class="term">
<code class="literal">transport.profiles.$PROFILE.xpack.security.filter.allow</code>
</span>
</dt>
<dd>
此 配置文件(profile) 允许的IP地址列表。
</dd>
<dt>
<span class="term">
<code class="literal">transport.profiles.$PROFILE.xpack.security.filter.deny</code>
</span>
</dt>
<dd>
此 配置文件(profile) 拒绝的IP地址列表
</dd>
</dl>
</div>
<h4>
<a id="hashing-settings"></a>用户缓存和密码哈希算法 (user cache and password hash algorithms)
</h4>
<p>
某些领域将用户凭据存储在内存中。
为了减少凭据被盗的风险并减少凭据泄露，缓存仅在内存中存储用户凭据的哈希版本。
默认情况下，用户缓存使用加盐的<code class="literal">sha-256</code>哈希算法进行哈希处理。
通过将 <code class="literal">cache.hash_algo</code> 领域设置为下面的任意一个值以使用不同的哈希算法： 
</p>
<div class="table">
<a id="cache-hash-algo"></a>
<p class="title"><strong>表 1. 缓存哈希算法</strong></p>
<div class="table-contents">
<table border="1" cellpadding="4px" summary="Cache hash algorithms">
<colgroup>
<col class="col_1">
<col class="col_2">
<col class="col_3">
<col class="col_4">
</colgroup>
<tbody>
<tr>
<td align="left" valign="top"><p>算法</p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>描述</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">ssha256</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用一个加盐的 <code class="literal">sha-256</code> 算法 (默认值)。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">md5</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">MD5</code> 算法。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">sha1</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">SHA1</code> 算法。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，对盐进行 1024 轮处理。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt4</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 16 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt5</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 32 轮处理后产生的。。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt6</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 64 轮处理后产生的。。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt7</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 128 轮处理后产生的。。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt8</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 256 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt9</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 512 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 10,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_1000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 1000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_10000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 10,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_50000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 50,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_100000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 100,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_500000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 500,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_1000000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 1,000,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">noop</code>,<code class="literal">clear_text</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>
不会对凭据进行哈希处理，而是以明文形式保存在内存中。
注意：保持明文被认为是不安全的，并且会在操作系统级别妥协(例如通过内存转储和使用<code class="literal">ptrace</code>)。
</p></td>
</tr>
</tbody>
</table>
</div>
</div>
<p>
同样，存储密码的领域使用加密性强且特定于密码的盐对密码进行哈希处理。

通过将 <code class="literal">xpack.security.authc.password_hashing.algorithm</code> 设置为以下值之一，可以配置密码哈希算法：
</p>
<div class="table">
<a id="password-hashing-algorithms"></a>
<p class="title"><strong>表 2. 密码哈希算法</strong></p>
<div class="table-contents">
<table border="1" cellpadding="4px" summary="Password hashing algorithms">
<colgroup>
<col class="col_1">
<col class="col_2">
<col class="col_3">
<col class="col_4">
</colgroup>
<thead>
<tr>
<th align="left" valign="top">算法</th>
<th align="left" valign="top"></th>
<th align="left" valign="top"></th>
<th align="left" valign="top">描述</th>
</tr>
</thead>
<tbody>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 1024 轮处理后产生的。(默认值)</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt4</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 16 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt5</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 32 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt6</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 64 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt7</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 128 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt8</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 256 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt9</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 512 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt10</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 1024 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt11</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 2048 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt12</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 4096 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt13</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 8192 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">bcrypt14</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">bcrypt</code> 算法，盐是 16384 轮处理后产生的。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 10,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_1000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 1,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_10000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 10,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_50000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 50,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_100000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 100,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_500000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 500,000 次迭代。</p></td>
</tr>
<tr>
<td align="left" valign="top"><p><code class="literal">pbkdf2_1000000</code></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p></p></td>
<td align="left" valign="top"><p>使用 <code class="literal">PBKDF2</code> 密钥派生函数，以 <code class="literal">HMAC-SHA512</code> 为伪随机函数，使用 1,000,000 次迭代。</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>

</div>

</div>
<div class="navfooter">
<span class="prev">
<a href="search-settings.html">« 搜索设置</a>
</span>
<span class="next">
<a href="shard-request-cache.html">分片的请求缓存设置 »</a>
</span>
</div>
</div>

                  <!-- end body -->
                        </div>
                        <div class="col-xs-12 col-sm-4 col-md-4" id="right_col">
                        
                        </div>
                    </div>
                </div>
            </section>
        </div>
    </section>
</div>
<script src="../static/cn.js"></script>
</body>
</html>